Git 和 intellij idea使用

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í)算法:回歸理論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末债蜜,一起剝皮案震驚了整個濱河市晴埂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌策幼,老刑警劉巖邑时,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奴紧,死亡現(xiàn)場離奇詭異特姐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)黍氮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門唐含,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沫浆,你說我怎么就攤上這事捷枯。” “怎么了专执?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵淮捆,是天一觀的道長。 經(jīng)常有香客問我本股,道長攀痊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任拄显,我火速辦了婚禮苟径,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躬审。我一直安慰自己棘街,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布承边。 她就那樣靜靜地躺著遭殉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪博助。 梳的紋絲不亂的頭發(fā)上恩沽,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音翔始,去河邊找鬼罗心。 笑死里伯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的渤闷。 我是一名探鬼主播疾瓮,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼飒箭!你這毒婦竟也來了狼电?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤弦蹂,失蹤者是張志新(化名)和其女友劉穎肩碟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凸椿,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡削祈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脑漫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片髓抑。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖优幸,靈堂內(nèi)的尸體忽然破棺而出吨拍,到底是詐尸還是另有隱情,我是刑警寧澤网杆,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布羹饰,位于F島的核電站,受9級特大地震影響碳却,放射性物質(zhì)發(fā)生泄漏队秩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一追城、第九天 我趴在偏房一處隱蔽的房頂上張望刹碾。 院中可真熱鬧,春花似錦座柱、人聲如沸迷帜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戏锹。三九已至,卻和暖如春火诸,著一層夾襖步出監(jiān)牢的瞬間锦针,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奈搜,地道東北人悉盆。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像馋吗,于是被迫代替她去往敵國和親焕盟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容