git rebase -i 中edit和fixup的簡單使用

一、edit的使用

1、當在某個分支上面存在多個commit,但是又必須在之前的commit進行修改的時候,可以使用edit來對舊的commit進行修改。

將改動分別提交爲兩個commit

兩次commit的test文件分別是這樣子的:

 

2、使用git log查看commit 歷史日誌信息

紅色線標註的兩個commit是剛剛提交的,藍色線標註的是此分支依賴的分支的最近的一次commit(後面會用到)

3、使用git rebase -i 命令進入vim交互界面(這裏的commit選擇的是兩次提交之前的一次commit,這樣才能將兩次提交顯示出來)

 此時可以看到兩次提交的信息,上面一個是第一次的提交,下面一個是第二次的提交(pick:使用commit)

看下面的註釋Commands部分,有對各種命令的介紹

4、將第一次提交前面的pick改爲edit或者e,第二次的提交仍爲pick,然後wq保存退出

 此時下圖可以看到正在進行rebase過程

 此時test文件的狀態是第一次提交時的狀態

5、對文件進行修改

修改之後使用git add .或者git add -u命令將修改文件添加到暫存區

然後使用給git commit --amend命令,進入如下界面,默認使用之前提交的描述,也可以進行修改。然後wq保存並推出。

 6、對第一個commit修改完成後,使用 git rebase --continue命令進行之後的修改。完成後會看到分支名稱的變化,以及test文件內容的變化。

7、修改完衝突以後,使用git add -u。然後查看狀態git status.會提示你進行continue命令,因爲你對第一個commit的修改已經完成,一直到最新的提交的衝突也解決。所以整個操作其實已經結束。現在要進行rebase命令的結束操作。

 運行git rebase --continue命令之後進入下面頁面,無需修改,直接wq保存並推出即可。

8、對第一次commit的修改到此結束。

 下圖就是最後的test文件的內容,也是我們想要達到的效果。

 

二、fixup的使用

1、當我們一個分支上面有多個提交,且部分提交是爲了彌補之前的提交所做的細微改動。這個時候可以使用fixup將這些細微的提交合並(被合併掉的提交的message將被刪除),這樣我們主分支的git log graph看起來就更加乾淨。

2、使用git log查看commit歷史,此分支有兩個commit,我們要將第二次的commit(3fcb)合併第一次commit裏面。

3、與edit一樣,先用git rebase -i 命令進入vim交互界面(使用兩次commit之前的commit的uuid),然後將要合併的commit的pick改成f或者fixup,wq保存並退出。

4、此時可以看到合併已經完成的提示,然後查看log,就只剩下第一次的commit,但是test文件內容沒有變化,因爲第二次的commit內容已經合在第一次commit裏面了。

 

三、總結

過程中可以多使用git status查看狀態,基本都會有提示。

爲了將步驟詳細還原,使用了大量截圖,還是很耗費時間的。

寫得不好、描述得不好的地方歡迎評論處指正,我儘量即使修改,謝謝~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章