在分支合並時,有兩種方式:git merge 和git rebase
舉個例子,當前有一個master分支,日志信息如下:

現在在master分支上創建一個dev分支,然后在dev分支上進行兩次提交,添加dev1.txt,dev2.txt,日志信息如下:

同時在master分支上進行兩次提交,添加master1.txt,master2.txt,日志信息如下:

現在要把dev分支合並到master分支
使用merge命令合並:git merge dev

使用rebase命令合並:git rebase dev

Git 會從兩個分支的共同祖先8eda20d開始提取 master 分支(當前所在分支)上的修改,即 e0779e1、ae0decb,再將 master 分支指向 dev的最新提交(目標分支)即 e45d38f處,然后將剛剛提取的修改依次應用到這個最新提交后面。操作會舍棄 master 分支上提取的 commit,同時不會像 merge 一樣生成一個合並修改內容的 commit,相當於把 master 分支(當前所在分支)上的修改在 dev分支(目標分支)上原樣復制了一遍
總結
-
merge 是一個合並操作,會將兩個分支的修改合並在一起
-
merge 的提交歷史忠實地記錄了實際發生過什么,關注點在真實的提交歷史上面
-
rebase 並沒有進行合並操作,只是提取了當前分支的修改,將其復制在了目標分支的最新提交后面
