前言
以前當我git提交信息出現錯誤的時候,如果是最近的一次提交,我會使用Sourcetree提交選項中的“更正上一次提交”(git --amend
)來補充或修改;但如果不是最新的一次提交,事情可能就有點麻煩了,我可能會將錯誤提交之后的每一條提交都創建補丁,然后再重置(強行合並)到錯誤的提交,使用“更正上一次提交”修正后,再一條一條應用之前打好的補丁,這一套操作很繁瑣,而且可能出現人為錯誤。
其實上面的一套操作git rebase
都給我們提供了封裝,簡化操作,可以實現對歷史提交記錄的一些操作,可以實現以下操作:
- 修改歷史提交信息
- 修改歷史提交順序
- 合並歷史提交
- 刪除歷史提交
- 修改歷史提交內容,如插入提交,將一次提交划分為兩次等
rebase變基分支的功能本文暫不涉及,這也是基礎用法。
下面主要記錄在Sourcetree中使用rebase 修改歷史提交的方法
一、修改歷史提交信息
目標:修改“first commit”為“first commit - changed”
-
右鍵需要修改提交的前一條提交,選擇“交互式變基xxx的子提交...”,會出現以下頁面
圖1 -
雙擊需要修改的提交的描述,或選中需要修改的提交后點擊左下角“編輯信息”,重新編輯提交信息。(也可以同時編輯多個歷史提交記錄)
圖2 -
依次點擊確認即可
圖3
二、修改歷史提交順序
目標:交換“first commit”和“second commit”的順序
- 同上面第一步,出現如圖1界面
- 鼠標拖動提交為更正的順序即可
-
依次點擊保存
圖4
三、合並歷史提交
目標:合並“first commit” 和 “second commit”為一次提交
- 同上面第一步,出現如圖1界面
-
鼠標拖動提交,使兩個提交重疊,如下
圖5 -
可修改合並后的描述,點擊確定即可
圖6
四、刪除歷史提交
目標:刪除“merge first and second commit”提交
- 同上面第一步,出現如圖1界面
- 選中需要刪除的提交,點擊下面刪除按鈕,點擊確定即可
五、修改歷史提交
目標:將“merge first and second commit”提交划分為兩次提交
修改的操作相比前面要多一些。
-
同上面第一步,出現如圖1界面
-
勾選需要修改的提交的“更正提交”選項
圖7 -
點擊確認,出現分離的HEAD
圖8 -
右鍵HEAD的前一條提交,選擇“重置到這次提交”,並進行混合合並
圖9 -
這樣需要修改的提交的內容就存在於工作區中,重新分次提交
圖10 -
點擊工具欄“動作”,選擇“繼續變基”
圖11 -
完成
圖12
總結
git rebase 命令很強大,但也不能過度依賴。因為它會將修改的歷史提交之后的提交一並重新提交,會導致不需要修改的提交的SHA和提交日期一並被修改,可能在某些場景並不適用。
作者:jason294
鏈接:https://www.jianshu.com/p/9e91ed38e74a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。