TortoiseGit 分支管理策略


Git服務器(CTP2交易用)地址:http://172.24.118.134:7990,用戶名和密碼為姓名全拼 ,注意修改密碼。

Git服務器(練習用)地址:http://172.24.118.130:7990,用戶名和密碼為姓名全拼,注意修改密碼。

Git 圖形界面客戶端選用TortoiseGit。

 

Git分支的本質

Git的分支實質上是一個包含所指對象校驗和(一般就是長度為50的字符串)的文件,可以看作指向提交對象的可變指針。

HEAD指向當前所在的分支(將HEAD想像為當前分支的別名),並隨着提交操作自動向前移動。當切換/檢出時,HEAD也隨之移動。

切換分支后,工作里的目錄會改變,如果是切換到一個較舊的分支,工作目錄會恢復到該分支最后一次提交時的樣子。

 

Git分支的新建、合並與刪除

考慮一種復雜場景:在iss53分支上進行了開發,進行了一半,此時又需要在主分支上創建一個hotfix分支進行修改。

7步解決方案:

1)在iss53分支上保存進度(stashing)或者修補提交(commit appending),以下步驟是建立在已經把iss53分支上的修改全部提交的基礎上;

2)創建並切換到hotfix分支,修改,提交(提交時請注意添加注釋,養成良好習慣);

 

3)在master分支上將hotfix分支合並回master分支

4) 刪除hotfix分支,切換到iss53分支(注意之前在hotfix上所作的工作並沒有包含到iss53分支中),繼續開發並提交

5)如果需要拉取hotfix所作的修改,可以將master分支合並入iss53分支,或者等iss53分支完成使命后合並回master分支。(該步驟為可選步驟)

6)檢出到你想合並入的分支即master分支,執行合並操作,因為分叉了,所以此時的合並其實是一個三方合並(C4、C5和C2),並且自動創建一次合並提交C6

 7) 刪除iss53分支

 

遇到沖突時的分支合並

考慮一種場景:當在兩個不同的分支中對同一個文件的同一個部分進行了不同的修改,Git就無法順利合並。比如當對iss53的修改和hotfix的修改都涉及到同一個文件的同一處,在合並時就會產生沖突。此時任何因包含合並沖突而有待解決的文件都會以未合並狀態標識出來。

手動解決沖突的辦法是:僅保留一個分支的修改,添加,處於暫存區就表明沖突已被解決。

 

分支開發工作流與分支策略(branching scheme)

1)長期分支/穩定分支

簡單而言,思想就是:經過測試考驗的提交會被遴選到更加穩定的流水線(work silos)上去,可以用這種方法維護不同層次的穩定性。

2)特性分支/短期分支/臨時分支

簡單而言,思想就是:工作被分散到不同的流水線。

上一節中涉及的iss53分支和hotfix分支都屬於特性分支,之所以是短期分支,是因為將他們合並(等待成熟之后再合並也不遲)入長期分支后就刪除了。

 

遠程分支

前面所述的分支存於本地,分支操作也是發生於本地,並沒有與服務器發生交互。

origin是當你運行Git 克隆命令時默認的遠程倉庫的名字,同理,默認的遠程分支的名字是origin/master,如下圖所示:

這時很容易產生這樣的場景,別人推送至服務器的master分支了,你還在本地的分支上折騰。

此時需要用到拉取PULL功能:查找origin是哪一個服務器,從中抓取本地沒有的數據,更新本地數據庫,移動origin/master指針指向新的、更新后的位置。

 

推送PUSH

如果希望和別人一起在名為serverfix的分支上工作,那就推送本地的serverfix分支來更新遠程倉庫上的serverfix分支,這樣下一次項目的其它協作者從服務器上抓取(有待確定)數據時,會在他們的本地生成一個遠程分支origin/serverfix,指向服務器的serverfix分支的引用,然后在其本地創建一個serverfix分支。

刪除遠程分支:假設已經通過遠程分支(比如這個serverfix)完成所有的工作了,意思就是你和你的協作者已經完成了一個特性並且將其合並到了遠程倉庫的master分支,那么就可以刪除了(在本地就可以刪除遠程分支了)

 

抓取FETCH

該操作會查找當前分支所跟蹤的服務器與分支,然后抓取克隆后或者上一次抓取后新推送的所有工作到你的本地倉庫,但不會自動合並或修改你當前的工作,需要手動合並。

 

拉取PULL

一般是抓取+合並一起執行,該操作會查找當前分支所跟蹤的服務器與分支,然后從服務器抓取數據,最后合並遠程分支到當前分支。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM