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

前言

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

  • 修改歷史提交信息
  • 修改歷史提交順序
  • 合并歷史提交
  • 刪除歷史提交
  • 修改歷史提交內(nèi)容,如插入提交,將一次提交劃分為兩次等

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


一、修改歷史提交信息

目標(biāo):修改“first commit”為“first commit - changed”
  1. 右鍵需要修改提交的前一條提交,選擇“交互式變基xxx的子提交...”,會(huì)出現(xiàn)以下頁(yè)面


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


    圖2
  3. 依次點(diǎn)擊確認(rèn)即可


    圖3

二、修改歷史提交順序

目標(biāo):交換“first commit”和“second commit”的順序
  1. 同上面第一步,出現(xiàn)如圖1界面
  2. 鼠標(biāo)拖動(dòng)提交為更正的順序即可
  3. 依次點(diǎn)擊保存


    圖4

三、合并歷史提交

目標(biāo):合并“first commit” 和 “second commit”為一次提交
  1. 同上面第一步,出現(xiàn)如圖1界面
  2. 鼠標(biāo)拖動(dòng)提交,使兩個(gè)提交重疊,如下


    圖5
  3. 可修改合并后的描述,點(diǎn)擊確定即可


    圖6

四、刪除歷史提交

目標(biāo):刪除“merge first and second commit”提交
  1. 同上面第一步,出現(xiàn)如圖1界面
  2. 選中需要?jiǎng)h除的提交,點(diǎn)擊下面刪除按鈕,點(diǎn)擊確定即可

五、修改歷史提交

目標(biāo):將“merge first and second commit”提交劃分為兩次提交

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

  1. 同上面第一步,出現(xiàn)如圖1界面

  2. 勾選需要修改的提交的“更正提交”選項(xiàng)


    圖7
  3. 點(diǎn)擊確認(rèn),出現(xiàn)分離的HEAD


    圖8
  4. 右鍵HEAD的前一條提交,選擇“重置到這次提交”,并進(jìn)行混合合并


    圖9
  5. 這樣需要修改的提交的內(nèi)容就存在于工作區(qū)中,重新分次提交


    圖10
  6. 點(diǎn)擊工具欄“動(dòng)作”,選擇“繼續(xù)變基”


    圖11
  7. 完成


    圖12

總結(jié)

git rebase 命令很強(qiáng)大,但也不能過(guò)度依賴(lài)。因?yàn)樗鼤?huì)將修改的歷史提交之后的提交一并重新提交,會(huì)導(dǎo)致不需要修改的提交的SHA和提交日期一并被修改,可能在某些場(chǎng)景并不適用。

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

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

  • 這篇博文是自己在學(xué)習(xí)git過(guò)程中的思考總結(jié)。本文僅僅代表個(gè)人的看法,如有不妥地方還請(qǐng)本文文末留言。 ?? 原文鏈接g...
    Ming_Hu閱讀 1,103評(píng)論 4 18
  • 朋友整理的,放這里偶爾過(guò)來(lái)看看 一、基本介紹 首先,Git作為版本控制系統(tǒng),他的原理與SVN為首的集中式版本控制系...
    allenzhan閱讀 1,017評(píng)論 0 3
  • Git提交歷史的修改刪除合并等實(shí)踐(轉(zhuǎn))今天主要針對(duì)在項(xiàng)目版本控制器Git的使用中遇到的一些和提交歷史操作相關(guān)的常...
    碼農(nóng)朱同學(xué)閱讀 1,127評(píng)論 0 1
  • 以下筆記主要參考gitgot,大致了解git使用和原理。 第一部分我們從個(gè)人的視角去研究如何用好Git,并且揭示G...
    carolwhite閱讀 2,415評(píng)論 0 1
  • 今天爸爸出差了,姥姥來(lái)到我們家照顧我,姥姥身體也不太好。但是每天為了照顧我,都會(huì)起得很早,為我做飯,送我上學(xué),還要...
    小靖_b107閱讀 56評(píng)論 0 0