使用Git Rebase合併多次提交

2021-10-06 16:48:57 字數 2000 閱讀 5062

在平時的軟體開發中,我們每個team使用乙個公共倉庫(這裡說的是git倉庫)。每當有乙個新的需求,我們會拉出乙個特性分支,然後在這個特性分支上做開發以及提交個人的**。

我有個習慣就是:為了確保**的安全性,每天下班前會把個人的本地倉庫**提交到公共倉庫。由於每天開發過程中由於各種原因會提交幾次**到個人倉庫,這樣就導致下班提交**到公共倉庫時,一次提交好幾個記錄,這樣就會是的公共倉庫有各種亂七八糟的所有增量修改歷史。為了避免太多的提交而造成版本控制的混亂,通常我們推薦將這些提交合併成乙個。

使用rebase合併提交

想要合併n條提交記錄,有兩個方法:

從head版本開始往過去數 n 個版本

git rebase -i head~n
指定乙個合併區間 startpoint 和 endpoint,注意:該區間指定的是乙個前開後閉的區間,意思就是startpoint不參與合併

git rebase -i  [startpoint]

[endpoint]

-i 的意思是 --interactive,即彈出互動式的介面讓使用者編輯完成合併操作

startpoint 和 endpoint 指定了乙個編輯區間

如果不指定endpoint,則該區間的終點endpoint預設是當前分支head所指向的提交

操作執行 git log 檢視提交歷史,接下來我們將三次提交合併為乙個提交

執行 git rebase -i head~3 ,彈出操作視窗

操作說明:

pick:保留該commit(縮寫:p)

reword:保留該commit,但我需要修改該commit的注釋(縮寫:r)

edit:保留該commit, 但我要停下來修改該提交(不僅僅修改注釋)(縮寫:e)

squash:將該commit和前乙個commit合併(縮寫:s)

fixup:將該commit和前乙個commit合併,但我不要保留該提交的注釋資訊(縮寫:f)

exec:執行shell命令(縮寫:x)

drop:我要丟棄該commit(縮寫:d)

根據我們的需求,我們將commit內容編輯如下:

pick 85697ee this is first commit.

squash ee461c1 this is second commit.

squash 326e415 this is third commit.

上面的意思就是把第二次、第三次提交都合併到第一次提交上。

然後儲存退出,git會壓縮提交歷史。如果有衝突,需要修改,修改的時候要注意,保留最新的歷史,不然我們的修改就丟棄了

修改以後要記得敲下面的命令:

git add .  

git rebase --

continue

如果你想放棄這次壓縮的話,執行以下命令:

git rebase --abort
如果沒有衝突,或者衝突已經解決,則會出現如下的編輯視窗

我們將三次提交資訊合併成乙個提交資訊

commit feature branch!

#this is first commit.

#this is second commit.

#this is third commit.

編輯完儲存即可完成commit的合併了,我們執行一下 git log然後提交到公共倉庫,有沒有感覺提交記錄清爽了許多

使用Git Rebase合併多次提交

在平時的軟體開發中,我們每個team使用乙個公共倉庫 這裡說的是git倉庫 每當有乙個新的需求,我們會拉出乙個特性分支,然後在這個特性分支上做開發以及提交個人的 我有個習慣就是 為了確保 的安全性,每天下班前會把個人的本地倉庫 提交到公共倉庫。由於每天開發過程中由於各種原因會提交幾次 到個人倉庫,這...

git rebase 的使用(一)合併多次提交記錄

有時候編寫乙個功能或者需求會提交多次commit,而有些commit只是修改了一些無關緊要的東西。而過多的commit記錄是不利於codereview,並且當遇到特殊情況需要做版本回滾的時候,過多的commit記錄也會帶來問題。這個時候就需要把一些commit記錄進行合併。讓每個commit都是乙個...

git rebase合併提交

git rebase的作用是合併提交。為什麼需要合併提交呢?假設我們在開發乙個功能,在這期間做了n次的commit,才最終完美實現了該功能。如果直接將這些commit直接提交到master,會使提交資訊顯得過多過雜,同時以後也不好確定哪些提交是對應這個功能的。所以將以上的n個commit合併成乙個,...