1. 程式人生 > >操作實踐,本地分支執行rebase,讓主幹分支記錄更簡潔

操作實踐,本地分支執行rebase,讓主幹分支記錄更簡潔

我們平時在寫程式碼的時候,難免會修修改改,如果團隊中每個人的程式碼提交記錄都包含著一堆中間過程,是很不利於團隊成員檢視主幹分支的程式碼提交記錄的。 下面就是一個不好的例子,本地pull主幹分支後,肯定希望看到的是特性開發、問題修改的記錄,而不是這樣中間一堆的中間過程。 這裡寫圖片描述 解決這個問題,一種可行的做法是先在本地分支上執行rebase操作在push到遠端個人分支,然後再執行合併到主幹分支的Merge Request。 下面的遠端分支操作基於iSource,比如,現在往遠端分支push了3次本地分支修改,遠端個人分支往主幹Merge前,提示有如下commit資訊。 這裡寫圖片描述

現在的目的就是在Merge到主幹前將這些commit rebase為一個提交記錄。 本地倉庫分支rebase具體操作如下。 step1:testRebase1、testRebase2、testRebase3是本地最新的3個commit,故可執行 git rebase -i HEAD~3 進入如下介面 這裡寫圖片描述

根據自己的需要合併和修改這些commit。修改和儲存這個介面的文字資訊的過程與vi操作類似,比如執行get rebase -i HEAD~3時進入的是命令模式,點選按鍵 i 進入編輯模式,此時可以對內容進行修改,修改完後點擊按鍵 Esc 退出編輯模式進入命令模式,命令列模式下輸入 “:” 進入末行模式,在末行模式下輸入wq回車即可儲存修改。 這裡寫圖片描述

儲存後自動進入commit message編輯介面 這裡寫圖片描述

編輯為自己需要的message,如下圖示例 這裡寫圖片描述

再次退出儲存,無誤的話,git shell介面提示如下資訊 這裡寫圖片描述

再次將本地分支push到遠端非人分支,遠端個人分支往主幹Merge前,就只提示一條commit記錄了,如下圖。 這裡寫圖片描述

本地檢視日誌記錄,結果如下。可以看到以前的3條中間過程的commit資訊已經沒了,剩下的是1條合併後的資訊。 這裡寫圖片描述

後記: 本地分支的rebase操作要求分支是純淨的,即不能有未提交的程式碼,但是實際操作中肯定會出現一些程式碼修改了但是現在還不想提交的,所以如果每次都要執行下git stash save/git stash pop操作。理論上完全可以在遠端個人分支上執行rebase操作,避免本地分支頻繁的get stash操作, 因為遠端分支一般都是我們從個人分支push上去的,不會有未提交的修改這類問題,且理論上遠端分支和本地分支地位是對等的。然而,實際中很多系統不允許執行遠端分支的rebase操作,比如本文作者在實際工作中遇到的就是這種情況,所以還是按部就班在本地執行rebase再push到遠端個人分支吧。 如果不習慣使用git shell,git GUI介面也可以完成這些操作,道理都是一樣的。