觀察了下身邊同事操作git基本上都是用git命令行或者tortoise git陆蟆。但是在windows下使用命令行得先啟動(dòng)bash诡延,有點(diǎn)麻煩竭钝。因此使用Android Studio自帶的圖形化版本控制工具還是能帶來(lái)一些便捷性的抑胎。當(dāng)然其他JetBrain系列的IDE如IntelliJ Idea燥滑、WebStorm等都通用。
0.開啟git版本控制
首先先在setting里設(shè)置git可執(zhí)行文件
點(diǎn)擊test可以測(cè)試下阿逃,我這是Mac下的路徑铭拧,windows下的就看自己git安裝在哪里了。
同時(shí)AS也深度支持GitHub恃锉,可以順便配置下自己GitHub的帳號(hào)搀菩。
對(duì)于本身就是使用git clone下來(lái)的項(xiàng)目,git是默認(rèn)打開的破托。使用Android Studio拉取項(xiàng)目可以在選取項(xiàng)目界面中選擇Check out Project from Version Control肪跋。
然后選擇git或者GitHub,非常方便土砂。
對(duì)于還沒(méi)有開啟git控制的項(xiàng)目州既,可以點(diǎn)擊VCS -> Enable Version Control Integration然后選擇git
這樣我們就可以開始選擇用Android Studio來(lái)進(jìn)行g(shù)it操作了。
1.commit/pull/push等基本操作
這些基本操作在任意文件下右鍵或者點(diǎn)擊File下選擇git即可:
可以說(shuō)毫無(wú)難度萝映。Anotate下面單獨(dú)說(shuō)吴叶。Show Current Revision是顯示當(dāng)前文件最近的一次修改記錄;Compare幾個(gè)操作數(shù)對(duì)比差異序臂;Show History和git log的作用相同蚌卤,顯示文件的所有歷史修改記錄。Revert是把當(dāng)前修改未commit的內(nèi)容還原奥秆,非常的方便逊彭。如果有要pull、push的commit吭练,也會(huì)顯示在這里面诫龙,或者直接點(diǎn)擊上方工具欄里的圖標(biāo)更方便。
2.Annotation的妙用
點(diǎn)擊上面的Annotation鲫咽,或者在文件的左側(cè)行數(shù)上右鍵點(diǎn)擊Annotation签赃,會(huì)顯示當(dāng)前文件每一行的最近提交記錄谷异,包含時(shí)間和提交人以及commit信息。
有*號(hào)的表示是未提交代碼锦聊。當(dāng)然我這里是一個(gè)個(gè)人項(xiàng)目歹嘹,只有我自己的提交記錄。
這個(gè)有什么用呢孔庭?如果是多人開發(fā)項(xiàng)目尺上,意義非常大,可以讓你以最快的速度甩鍋(開個(gè)玩笑- -)圆到。在開發(fā)人數(shù)非常多的時(shí)候怎抛,我們不可避免的要經(jīng)常讀別人的代碼。當(dāng)我們看不懂某行代碼時(shí)就可以第一時(shí)間通過(guò)Annotation找到提交人芽淡,然后問(wèn)他马绝。如果想看是誰(shuí)動(dòng)了自己模塊的代碼,也是一樣的簡(jiǎn)單挣菲。每當(dāng)測(cè)試發(fā)出一個(gè)crash記錄時(shí)富稻,立馬定位到代碼看下Annotation,是不是自己的鍋白胀。椭赋。或杠。蔓涧。。。
3.Gerrit push不了的問(wèn)題解決
有的同學(xué)會(huì)發(fā)現(xiàn),用studio內(nèi)置的圖形化工具gerrit的倉(cāng)庫(kù)push不上去讶迁。仔細(xì)想一下啸驯,提交gerrit倉(cāng)庫(kù)的時(shí)候我們是這樣寫的:
git push origin HEAD:refs/for/xxxx
也就是說(shuō)提交的遠(yuǎn)程分支上要加一個(gè)refs/for宅楞,這個(gè)也很簡(jiǎn)單距淫,如下,我們?cè)趐ush的時(shí)候把這段加上就可以了撤蟆,一般改一次就行了。
4.Changelist的使用
有時(shí)候我們需要在本地修改一些代碼便于測(cè)試調(diào)試反镇,比如數(shù)據(jù)庫(kù)是加密的,我們本地需要改成不加密的然后才能用工具調(diào)試sqlite數(shù)據(jù)庫(kù)。但是這個(gè)代碼又不能提交到遠(yuǎn)程倉(cāng)庫(kù)上烹俗。這樣我們每次提交的時(shí)候都需要小心翼翼的把這個(gè)文件勾掉累提,或者還原掉,很麻煩斋陪。這個(gè)時(shí)候就輪到Changelist出場(chǎng)了:
點(diǎn)擊下方的Version Control朽褪,在Local Changes里選擇我們不想提交的文件右鍵選擇Move to Another Changelist, 然后新建一個(gè)Changelist,注意左下的Set active不要勾選无虚。沒(méi)有勾選active的Changelist默認(rèn)是不會(huì)在commit的時(shí)候提交的缔赠。
然后在我們commit的時(shí)候就不會(huì)出現(xiàn)這些文件,當(dāng)然commit的時(shí)候也是可以選擇其他Changelist來(lái)提交這些文件的友题。
5.結(jié)語(yǔ)
JetBrain家做的IDE真的是無(wú)比強(qiáng)大嗤堰,肯定還有些其他功能我沒(méi)有發(fā)現(xiàn)的,大家可以回復(fù)告訴我度宦。當(dāng)然踢匣,用git命令行肯定也是必不可少的,目前我處理復(fù)雜的git問(wèn)題還是會(huì)使用命令行戈抄,普通的pull/push使用IDE自帶的圖形化工具离唬。最后吐槽一下Mac OS的截圖是真的麻煩,截完還要自己去手動(dòng)命名划鸽,真的是不如windows下截圖方便输莺。