記錄Sourcetree 基於git rebase修改git提交記錄的方法


前言

以前當我git提交信息出現錯誤的時候,如果是最近的一次提交,我會使用Sourcetree提交選項中的“更正上一次提交”(git --amend)來補充或修改;但如果不是最新的一次提交,事情可能就有點麻煩了,我可能會將錯誤提交之后的每一條提交都創建補丁,然后再重置(強行合並)到錯誤的提交,使用“更正上一次提交”修正后,再一條一條應用之前打好的補丁,這一套操作很繁瑣,而且可能出現人為錯誤。
其實上面的一套操作git rebase都給我們提供了封裝,簡化操作,可以實現對歷史提交記錄的一些操作,可以實現以下操作:

  • 修改歷史提交信息
  • 修改歷史提交順序
  • 合並歷史提交
  • 刪除歷史提交
  • 修改歷史提交內容,如插入提交,將一次提交划分為兩次等

rebase變基分支的功能本文暫不涉及,這也是基礎用法。
下面主要記錄在Sourcetree中使用rebase 修改歷史提交的方法


一、修改歷史提交信息

目標:修改“first commit”為“first commit - changed”
  1. 右鍵需要修改提交的前一條提交,選擇“交互式變基xxx的子提交...”,會出現以下頁面


     
    圖1
  2. 雙擊需要修改的提交的描述,或選中需要修改的提交后點擊左下角“編輯信息”,重新編輯提交信息。(也可以同時編輯多個歷史提交記錄)


     
    圖2
  3. 依次點擊確認即可


     
    圖3

二、修改歷史提交順序

目標:交換“first commit”和“second commit”的順序
  1. 同上面第一步,出現如圖1界面
  2. 鼠標拖動提交為更正的順序即可
  3. 依次點擊保存


     
    圖4

三、合並歷史提交

目標:合並“first commit” 和 “second commit”為一次提交
  1. 同上面第一步,出現如圖1界面
  2. 鼠標拖動提交,使兩個提交重疊,如下


     
    圖5
  3. 可修改合並后的描述,點擊確定即可


     
    圖6

四、刪除歷史提交

目標:刪除“merge first and second commit”提交
  1. 同上面第一步,出現如圖1界面
  2. 選中需要刪除的提交,點擊下面刪除按鈕,點擊確定即可

五、修改歷史提交

目標:將“merge first and second commit”提交划分為兩次提交

修改的操作相比前面要多一些。

  1. 同上面第一步,出現如圖1界面

  2. 勾選需要修改的提交的“更正提交”選項


     
    圖7
  3. 點擊確認,出現分離的HEAD


     
    圖8
  4. 右鍵HEAD的前一條提交,選擇“重置到這次提交”,並進行混合合並


     
    圖9
  5. 這樣需要修改的提交的內容就存在於工作區中,重新分次提交


     
    圖10
  6. 點擊工具欄“動作”,選擇“繼續變基”


     
    圖11
  7. 完成


     
    圖12

總結

git rebase 命令很強大,但也不能過度依賴。因為它會將修改的歷史提交之后的提交一並重新提交,會導致不需要修改的提交的SHA和提交日期一並被修改,可能在某些場景並不適用。



作者:jason294
鏈接:https://www.jianshu.com/p/9e91ed38e74a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

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



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