1. IDEA中Git的使用方式
1.1 在IDEA中配置git的安裝路徑。
使用的版本是ULTIMATE 2018.3营勤。 配置git的安裝目錄蜡镶,Mac系統(tǒng)可以使用系統(tǒng)自帶的git即可母蛛。點(diǎn)擊Test來測試已經(jīng)配置好:
1.2 使用IDEA 創(chuàng)建項(xiàng)目并提交本地倉庫
創(chuàng)建一個簡單的java項(xiàng)目來測試提交本地倉庫,點(diǎn)擊 File -> New -> Module 來新建一個Moudle七婴,注意配置路徑步驟祟偷,將module放在項(xiàng)目根目錄下。
創(chuàng)建一個簡單的類作為測試打厘。下面將項(xiàng)目提交到本地庫修肠。左鍵選中這個項(xiàng)目,按照下邊的圖示最終點(diǎn)擊"Create Git Repository..."
在彈出框中户盯,選好這個項(xiàng)目的目錄:
選好了項(xiàng)目目錄后嵌施,項(xiàng)目中的文件也相應(yīng)的變?yōu)榱思t色(紅色表示已經(jīng)初始化好了本地庫):
如果cd到這個項(xiàng)目的目錄下,也可以看到.git文件夾莽鸭,說明已經(jīng)完成了git的初始化(git init的結(jié)果):
下面就需要提交文件到暫存區(qū)(git add [filename])和本地倉庫(git commit -m "x" [filename])吗伤,在IDEA中,這2步是合成了一步完成的硫眨。右鍵我們的項(xiàng)目足淆,按照下圖選擇"Commit Directory..."
選擇要提交到本地倉庫的文件,并鍵入注釋信息礁阁,點(diǎn)擊“Commit”按鈕完成上傳本地倉庫巧号。
1.3 IDEA指定忽略文件
在進(jìn)行版本控制時,應(yīng)該只提交開發(fā)的代碼(.java文件)氮兵,不能提交一些IDEA項(xiàng)目的配置文件.iml文件裂逐,因?yàn)椴煌_發(fā)人員的IDEA工具的版本會有差別歹鱼,如果版本控制了這些工具配置文件泣栈,其他人員在pull文件時,如果拿下了iml文件會影響自身工具的配置,導(dǎo)致錯誤南片。
第一種方法掺涛,設(shè)置某些格式文件不顯示:
第二種方法,是我選取的方法疼进,將某種類型的文件薪缆,排除在VCS控制之外。
配置好了之后伞广,顯示后的內(nèi)容不會放在VCS控制內(nèi)拣帽,不會被提交。例如嚼锄,下面的例子减拭,將規(guī)定所有以iml結(jié)尾的文件將不在VCS控制下。
第三種方法需要安裝.ignore插件区丑。
訪問下面的地址來下載插件:http://plugins.jetbrains.com/拧粪,選擇要安裝的插件來搜索,搜索出結(jié)果后沧侥,非常重要的是查看自己的IDEA的版本可霎,選取對應(yīng)版本的插件*。
1.4 推送代碼到遠(yuǎn)程庫
既然推送到遠(yuǎn)程庫宴杀,首先需要先建立一個遠(yuǎn)程庫癣朗,這里我以碼云(https://gitee.com/)為例,其他Github旺罢,私服的Gitlab也是同樣的斯棒。
先在碼云上創(chuàng)建一個空的倉庫:
創(chuàng)建好空的遠(yuǎn)程倉庫后,復(fù)制HTTP鏈接備用主经,https://gitee.com/mjlsg/GitTestDemo.git荣暮。下面在IDEA中右擊項(xiàng)目GitTestDemo1將其push到這個遠(yuǎn)程倉庫。
在下一個窗口中點(diǎn)擊 "Define remote":
下一步定義遠(yuǎn)程庫的別名罩驻,下面窗口中穗酥,"Name"項(xiàng)是遠(yuǎn)程庫的別名,URL是遠(yuǎn)程庫的地址惠遏。
下面直接點(diǎn)擊push完成整個“推送代碼到遠(yuǎn)程倉庫”的操作砾跃。
需要注意的是,在推送代碼到遠(yuǎn)程倉庫時涉及到用戶密碼管理节吮、權(quán)限等諸多問題抽高。IDEA可以記錄用戶名,密碼這樣可以防止每次在push時都需要輸入用戶名透绩、密碼翘骂,很麻煩壁熄。
但是,這里有一點(diǎn)需要特別注意碳竟,有時在記錄用戶名草丧、密碼時可能會出現(xiàn)Authentition的問題,這種問題出現(xiàn)的場景時莹桅,當(dāng)多個用戶共同開發(fā)一個project時昌执,他們都需要從一個遠(yuǎn)程倉庫地址來checkout,也需要push诈泼。這時懂拾,一定注意自己的用戶和相應(yīng)的權(quán)限是否符合要求。如果權(quán)限不符合要求铐达,就會出現(xiàn)Authentition問題委粉。
最后,經(jīng)檢驗(yàn)代碼已經(jīng)在遠(yuǎn)程倉庫上娶桦,push成功贾节。
1.5 IDEA克隆遠(yuǎn)程倉庫項(xiàng)目到本地
克隆遠(yuǎn)程倉庫項(xiàng)目,需要先獲得要clone項(xiàng)目的HTTP地址衷畦。在IDEA中栗涂,按如下操作:
點(diǎn)擊后,輸入要clone的項(xiàng)目的HTTP地址和項(xiàng)目需要放置的位置祈争,如下圖:
上邊的截圖中斤程,可以點(diǎn)擊 "Log in to Github..."按鈕,并設(shè)置其他托管平臺的信息菩混,不一定是Github忿墅。
下面簡單設(shè)置一下IDEA工程的基本信息后,就可以新建一個project了沮峡。
1.6 IDEA拉取遠(yuǎn)程倉庫項(xiàng)目
這里為了演示pull操作疚脐,在GitTestDemo項(xiàng)目(1.5節(jié)clone下來的project)做一次commit,并push遠(yuǎn)程庫邢疙,以修改遠(yuǎn)程庫代碼棍弄。
回到GitTestDemo1項(xiàng)目,右鍵這個項(xiàng)目疟游,按照下面操作進(jìn)行點(diǎn)擊"pull":
點(diǎn)擊后呼畸,出現(xiàn)下邊信息:
需要仔細(xì)說明下這些信息。遠(yuǎn)程庫代碼pull后颁虐,放到本地的"Git Root"項(xiàng)目路徑蛮原。Remote是我們要pull的遠(yuǎn)程庫的地址。"Branches to merge"表示另绩,我們要拉取的是遠(yuǎn)程庫的master分支儒陨,這里的origin是遠(yuǎn)程庫的別名花嘶。點(diǎn)擊pull后,更新后的代碼就pull過來了框全。
1.7 解決沖突
Git沖突在下邊情景中會產(chǎn)生,假如A和B兩個人干签,同時修改了代碼增添了不同的內(nèi)容津辩,當(dāng)A已經(jīng)push了遠(yuǎn)程庫后,B再push遠(yuǎn)程庫時就會有沖突容劳,可能會覆蓋A的修改喘沿。
下邊例子,原始代碼如下:
public class CommitRepository {
public static void main(String[] args) {
System.out.println("Commit project to Local Repository!");
System.out.println("第二個人更新代碼");
}
}
A修改了代碼竭贩,并push到了遠(yuǎn)程庫蚜印,代碼如下:
public class CommitRepository {
public static void main(String[] args) {
System.out.println("Commit project to Local Repository!");
System.out.println("第二個人更新代碼");
System.out.println("3333333333333333");
}
public void test(){
System.out.println("From GitTestDemo Pro");
}
}
之后,B修改了代碼留量,并準(zhǔn)備提交窄赋,代碼如下:
public class CommitRepository {
public static void main(String[] args) {
System.out.println("Commit project to Local Repository!");
System.out.println("第二個人更新代碼");
System.out.println("444444444444444");
}
public void add(){
System.out.println("From GitTestDemo1 Pro");
}
}
可以發(fā)現(xiàn)B的代碼與A的代碼有區(qū)別,在main函數(shù)中楼熄,并且新增的方法也不一樣忆绰,如果B push了自己的代碼到遠(yuǎn)程倉庫,會覆蓋掉A的代碼可岂,導(dǎo)致錯誤错敢。
B將代碼Commit到本地倉庫時,不會有錯誤缕粹。在push到遠(yuǎn)程倉庫時稚茅,會出現(xiàn)錯誤:
遇到這種錯誤時,需要點(diǎn)擊merge來解決沖突平斩,通常B需要和A溝通后才能merge亚享,以保證不影響A的功能代碼。merge的內(nèi)容在下邊對話框中自己手動輸入绘面,以防止錯誤虹蒋。
修改完中間的版本后,點(diǎn)擊"Apply"飒货,就將自己的代碼修改為中間的版本魄衅,再次操作Git -> push就可以完成最終的覆蓋遠(yuǎn)程代碼庫的操作。
2. Git工作流
2.1 企業(yè)Git工作流
Git工作流通過為功能開發(fā)塘辅、發(fā)布準(zhǔn)備和維度設(shè)立了獨(dú)立的分支晃虫,也讓發(fā)布迭代過程更為順暢。嚴(yán)格的分支模型為大型項(xiàng)目提供了必要的結(jié)構(gòu)扣墩。
在企業(yè)環(huán)境下哲银,比較大的項(xiàng)目的分支會比較復(fù)雜扛吞,一般情況下,可以按照下邊這個結(jié)果進(jìn)行分支策略荆责。
master分支:管理正在運(yùn)行的生產(chǎn)環(huán)境代碼滥比。
2.2 測試實(shí)例
2.2.1 多用戶準(zhǔn)備
為了完成多用戶協(xié)同開發(fā)的測試,需要多個碼云用戶做院,并在倉庫層面添加用戶盲泛。具體添加方法是登陸碼云,在管理功能下键耕,直接添加用戶寺滚,操作流程如下:
邀請用戶后,被邀請用戶收到私信屈雄,被邀請用戶同意邀請即可村视。
2.2.2 測試過程
項(xiàng)目GitTestDemo模擬程序猿用戶,項(xiàng)目右鍵 -> Git -> Repository -> Branches 酒奶;
新建一個develop branch:
在代碼中開發(fā)一些功能蚁孔。
3. IDEA的常見配置:
下邊總結(jié)了一些常用的配置,對于提高效率有幫助:
1.Preference -> Editor 惋嚎,這兩項(xiàng)可以勾選上勒虾。完成2個功能:(1) 滑輪改變字體大小 (2)鼠標(biāo)滑過一個類時,顯示這個類的信息瘸彤。
2.設(shè)置自動導(dǎo)包修然。
在輸入代碼時,需要導(dǎo)入包质况,或者處理錯誤時愕宋,使用 Alt + Enter來處理。
3.設(shè)置顯示行號和方法分隔符(將不同方法區(qū)分開來):
4.導(dǎo)入包時不區(qū)分大小寫:
在java中輸入代碼stringBuilder時结榄,IDEA默認(rèn)不幫我們提示或是代碼補(bǔ)充中贝,但是如果輸入了正確的StringBuffer就會進(jìn)行代碼提示和補(bǔ)充。去掉大小寫檢查勾選臼朗,讓其都進(jìn)行補(bǔ)充邻寿。
5.文件tab在多行顯示,避免一行時隱藏文件tab標(biāo)簽
當(dāng)打開的文件比較多時视哑,默認(rèn)情況下绣否,IDEA會都在一行中顯示,如果沒地方會隱藏一些tab挡毅,這樣用起來不方便蒜撮。
6.配置新建類的注釋模板,這樣可以極大減少工作量。
一般地段磨,在IDEA中取逾,有以下常見的變量:
${PACKAGE_NAME} - 引用當(dāng)前創(chuàng)建類時所在的包名
${PROJECT_NAME} - 當(dāng)前項(xiàng)目名
${NAME} - 文件名
${USER} - 引用當(dāng)前系統(tǒng)的登錄用戶名
${DATE} - 引用當(dāng)前系統(tǒng)的日期
${TIME} - 引用當(dāng)前系統(tǒng)的時分秒
${YEAR} - 引用當(dāng)前系統(tǒng)的年
${MONTH} - 引用當(dāng)前系統(tǒng)的月
${DAY} - 引用當(dāng)前系統(tǒng)的日
${HOUR} - 引用當(dāng)前系統(tǒng)的小時
${MINUTE} - 引用當(dāng)前系統(tǒng)的分
可以根據(jù)自己的實(shí)際需求來配置,例如下邊的配置模板:
7.全局設(shè)置文件編碼方式
全局設(shè)置項(xiàng)目文件編碼方式苹支,代碼中包含中文等字符時砾隅,設(shè)置這項(xiàng)有較大意義。
======== 返回目錄 ========
《《《 上一篇 Stream API
》》》 下一篇 機(jī)器學(xué)習(xí)算法:回歸理論