1 Git的.gitignore配置
一般來說每個Git項目中都需要一個“.gitignore”文件,這個文件的作用就是告訴Git哪些文件不需要添加到版本管理中心。實(shí)際項目中,有很多文件都不需要版本管理的,比如*.class、.classpath、.project等。.gitignore文件的內(nèi)容是一些規(guī)則,Git會根據(jù)這些規(guī)則來判斷是否將文件添加到版本控制中。
下面我們看看常用的規(guī)則:
- /target/ 過濾整個文件夾
- *.class 過濾所有.class文件
- .classpath 過濾某個具體文件
.gitignore文件中還可以指定要將哪些文件添加到版本庫中,唯一的區(qū)別就是規(guī)則開頭多了一個感嘆號。
- !*.java
.gitignore文件的配置語法及過濾規(guī)則,有興趣的的話自己可以深入研究下,這里不具體展開。
注意:一定要養(yǎng)成在項目開始就創(chuàng)建.gitignore文件的習(xí)慣,如果不慎在創(chuàng)建.gitignore文件之前就push了項目,處理起來會比較麻煩。
2 分支管理策略
2.1主分支Master
首先,代碼庫應(yīng)該有一個、且僅有一個主分支。所有提供給用戶使用的正式版本,都在這個主分支上發(fā)布。
Git主分支的名字默認(rèn)叫做Master。它是自動建立的,版本庫初始化以后,默認(rèn)就是在主分支上進(jìn)行開發(fā)。
2.2 開發(fā)分支Develop
主分支只用來發(fā)布重大版本,日常開發(fā)應(yīng)該在另一條分支上完成。我們把開發(fā)用的分支,叫做Develop。如果想正式對外發(fā)布,就在Master分支上,對Develop分支進(jìn)行“合并”(merge)。
2.3 臨時性分支
前面講到版本庫的兩條主要分支:Master和Develop。前者用于正式發(fā)布,后者用于日常開發(fā)。其實(shí),常設(shè)分支只需要這兩條就夠了,不需要其他了。
但是,除了常設(shè)分支以外,還有一些臨時性分支,用于應(yīng)對一些特定目的的版本開發(fā)。臨時性分支主要有三種:
功能(feature)分支
預(yù)發(fā)布(release)分支
修補(bǔ)bug(fixbug)分支
這三種分支都屬于臨時性需要,使用完以后,應(yīng)該刪除,使得代碼庫的常設(shè)分支始終只有Master和Develop。
3 Git開發(fā)流程
3.1 從遠(yuǎn)程倉庫克隆
任何開發(fā)者都不會對源倉庫進(jìn)行直接的操作,源倉庫建立好后,每個開發(fā)者都需要做的事情就是把源倉庫
“復(fù)制”一份到本地,作為自己日常開發(fā)的倉庫。
git clone url
3.2 查看遠(yuǎn)程分支
git ls-remote
3.3 創(chuàng)建本地開發(fā)分支
所有開發(fā)者在開發(fā)前都需要基于遠(yuǎn)程develop分支創(chuàng)建一個本地develop分支。
git branch local_develop origin/develop
切換分支,現(xiàn)在開發(fā)者就可以在local_develop分支上開始開發(fā)、提交commit,貢獻(xiàn)自己的代碼。
git checkout local_develop
git status 時刻掌握倉庫當(dāng)前的狀態(tài)
git add <file>
git commit –a –m “”
當(dāng)然,你還可以創(chuàng)建自己的特性分支,在特性分支上進(jìn)行開發(fā)工作
git checkout –b feature_branch
git add <file> 添加文件
git commit –a –m “” 提交
git checkout local_develop 切回到local_develop分支
git merge feaure-branch 將特性分支合并到local_develop分支
git branch –d feaure-branch 刪除特性分支
無論你通過哪種方式開發(fā),現(xiàn)在本地倉庫的local_develop上就是開發(fā)者最新的修改,只需要把在本地分支上的修改推送到遠(yuǎn)程分支,開發(fā)者就算貢獻(xiàn)了自己的第一次提交。
git push origin local_develop:develop
3.4 合并分支
所有開發(fā)者的提交都會在遠(yuǎn)程develop分支中匯總,當(dāng)develop中的代碼經(jīng)過不斷的測試,逐漸趨于穩(wěn)定了,可以把develop分支合并到master分支中,同時添加一個新的版本號。
任何人都不應(yīng)該向master直接進(jìn)行無意義的合并,正常情況下,master只接受develop的合并。
git checkout develop
git fetch origin/develop
git checkout master
git merge develop
git push origin master:master
3.5 解決沖突
在多人開發(fā)的情況下,沖突在所難免。如何快速準(zhǔn)確的解決沖突是每個開發(fā)人員必須掌握的技能。
1、直接編輯沖突文件
沖突產(chǎn)生后,文件系統(tǒng)中沖突了的文件(這里是test.txt)里面的內(nèi)容會顯示為類似下面這樣:
上圖中:沖突標(biāo)記<<<<<<<(7個<)與=======之間的內(nèi)容是我的修改,=======與>>>>>>>之間的內(nèi)容是別人的修改。
此時,還沒有任何其它垃圾文件產(chǎn)生。
最簡單的編輯沖突的辦法,就是直接編輯沖突了的文件(test.txt),把沖突標(biāo)記刪掉,把沖突解決正確。
2、利用圖形界面工具解決沖突
使用git自帶的工具查看差異和合并差異十分不方便,
如果要解決的沖突很多,且比較復(fù)雜,圖形界面的沖突解決工具就顯得很重要了。
執(zhí)行g(shù)it mergetool/git difftool用預(yù)先配置的Beyond Compare工具解決沖突。git mergetool/git difftool的具體配置方法可在網(wǎng)上搜到很多參考資料,這里不詳細(xì)講解。
資料推薦
掌握Git基本原理、開發(fā)流程及Git命令是每個開發(fā)者的必備技能,這里推薦一些資料供大家學(xué)習(xí)參考。
《Pro Git》
《Git-Book》
《Git版本控制管理》