1. 程式人生 > >用git rebase合併

用git rebase合併

合併issue3分支的時候,使用rebase可以使提交的歷史記錄顯得更簡潔。

現在暫時取消剛才的合併。

$ git reset --hard HEAD~

rebase前的歷史記錄

切換到issue3分支後,對master執行rebase。

$ git checkout issue3
Switched to branch 'issue3'
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: 新增pull的說明
Using index info to reconstruct a base tree...
<stdin>:13: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging myfile.txt
CONFLICT (content): Merge conflict in myfile.txt
Failed to merge in the changes.
Patch failed at 0001 新增pull的說明

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

和merge時的操作相同,修改在myfile.txt發生衝突的部分。

連猴子都懂的Git命令
add 把變更錄入到索引中
<<<<<<< HEAD
commit 記錄索引的狀態
=======
pull 取得遠端資料庫的內容
>>>>>>> issue3

rebase的時候,修改衝突後的提交不是使用commit命令,而是執行rebase命令指定 --continue選項。若要取消rebase,指定 --abort選項。

$ git add myfile.txt
$ git rebase --continue
Applying: 新增pull的說明

目前的歷史記錄

這樣,在master分支的issue3分支就可以fast-forward合併了。切換到master分支後執行合併。

$ git checkout master
Switched to branch 'master'
$ git merge issue3
Updating 8f7aa27..96a0ff0
Fast-forward
 myfile.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

myfile.txt的最終內容和merge是一樣的,但是歷史記錄如下。

目前的歷史記錄

from: https://backlog.com/git-tutorial/cn/stepup/stepup2_8.html