git 更新 commit 的內容和多個 commit 合并

場景1

有時候我們發現 commit 寫的不好,想要更改當前分支最近一次的 commit 的內容,我們可以使用:

git commit --amend

場景二

既然可以更改最近一次的 commit,那可能有些人就想要在當前分支下前幾次的 commit 內容進行更改或者進行 commit 合并,那我們需要怎么做呢?方法如下:(注意此操作最好是在自己維護的分支上弄,多人開發的分支就不太適合)

使用git rebase -i xxxx,這里的 i 指的是交互的意思

現在項目 commit 如下


我現在想要更改第二個 commit 的內容,那我需要知道當前要修改的 commit 的父親的 id,也就是 init game 的 commit id 1801cf5,然后git rebase -i 1801cf5

當前是 pick,我們需要使用 reword 來更改第二個 commit 的內容

保存退出,出現

修改 commit 內容,然后退出,出現

git log —oneline 查看

成功添加.號

場景3

現在我們想要把第二個 commit 和第一個 commit 這兩個連續的 commit 進行合并,我們可以這樣:

同樣使用git rebase -i 1801cf5,將第二個 pick 改為 s(squash),這樣可以合并到上一個commit

保存退出

修改成

保存退出

git log —oneline 查看

成功合并。

場景4

現在有人又有個疑惑,如果我是相隔的 commit,但是我想將相隔的 commit 的內容進行合并,那又需怎么做呢?

還是以下面這個為例子


現在我們想將第一個 commit 的內容和第三個內容進行合并,這里你可能你比較疑惑,第三個 commit 的上一個 commit 是沒有的,那怎么用 rebase 呢?我們需要記下第三個 commit 的 id,輸入git rebase -i 1801cf5

目前只有兩個,沒有 init game 的 commit id,我們需要將這個 commit id 添加上去(我們可以不用寫commit 的內容):

將相關要合并的 commit 寫在一起:

保存退出。按照之前的步驟即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。