git merge和git rebase的區別


在分支合並時,有兩種方式: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 分支(當前所在分支)上的修改,即 e0779e1ae0decb,再將 master 分支指向 dev的最新提交(目標分支)即 e45d38f處,然后將剛剛提取的修改依次應用到這個最新提交后面。操作會舍棄 master 分支上提取的 commit,同時不會像 merge 一樣生成一個合並修改內容的 commit,相當於把 master 分支(當前所在分支)上的修改在 dev分支(目標分支)上原樣復制了一遍

總結

  • merge 是一個合並操作,會將兩個分支的修改合並在一起

  • merge 的提交歷史忠實地記錄了實際發生過什么,關注點在真實的提交歷史上面

  • rebase 並沒有進行合並操作,只是提取了當前分支的修改,將其復制在了目標分支的最新提交后面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM