開發(fā)中Git問題小結(jié)

1 Git的.gitignore配置

一般來說每個Git項目中都需要一個“.gitignore”文件,這個文件的作用就是告訴Git哪些文件不需要添加到版本管理中心。實(shí)際項目中,有很多文件都不需要版本管理的,比如*.class、.classpath、.project等。.gitignore文件的內(nèi)容是一些規(guī)則,Git會根據(jù)這些規(guī)則來判斷是否將文件添加到版本控制中。
下面我們看看常用的規(guī)則:

  1. /target/ 過濾整個文件夾
  1. *.class 過濾所有.class文件
  2. .classpath 過濾某個具體文件

.gitignore文件中還可以指定要將哪些文件添加到版本庫中,唯一的區(qū)別就是規(guī)則開頭多了一個感嘆號。

  1. !*.java
    .gitignore文件的配置語法及過濾規(guī)則,有興趣的的話自己可以深入研究下,這里不具體展開。
    注意:一定要養(yǎng)成在項目開始就創(chuàng)建.gitignore文件的習(xí)慣,如果不慎在創(chuàng)建.gitignore文件之前就push了項目,處理起來會比較麻煩。

2 分支管理策略

2.1主分支Master

首先,代碼庫應(yīng)該有一個、且僅有一個主分支。所有提供給用戶使用的正式版本,都在這個主分支上發(fā)布。

image.png

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)。

image.png

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)容會顯示為類似下面這樣:

image.png

上圖中:沖突標(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ì)講解。

Beyond Compare

資料推薦

掌握Git基本原理、開發(fā)流程及Git命令是每個開發(fā)者的必備技能,這里推薦一些資料供大家學(xué)習(xí)參考。
《Pro Git》
《Git-Book》
《Git版本控制管理》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,736評論 9 163
  • 今天在圖書館書架轉(zhuǎn)角突然看到一本書。 最近在準(zhǔn)備考試,已經(jīng)好久沒有靜下心來看看書了。 隨便翻到了《童年軼事》,一篇...
    橘子孫閱讀 421評論 0 1
  • 手機(jī)里下載了個百度網(wǎng)盤的App,平時拍攝或下載的圖片,在網(wǎng)絡(luò)環(huán)境下實(shí)時上傳云端,手機(jī)進(jìn)水或主版燒壞,再也不擔(dān)心歷史...
    初刻杰閱讀 260評論 0 0
  • 再不舍,再留戀,終究要離開這四年的大學(xué),離開相處四年的室友。畢業(yè)季,是一個感傷的季節(jié);畢業(yè)季,是一個迷茫的季節(jié)。 ...
    莫大懵丶閱讀 476評論 2 0
  • 哄小轟閱讀 118評論 0 0