日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

不喜欢 merge 分叉,那就用 rebase 吧

發布時間:2023/12/4 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不喜欢 merge 分叉,那就用 rebase 吧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

閱讀本文大概需要 3 分鐘。

有些人不喜歡?merge,因為在?merge?之后,commit?歷史就會出現分叉,這種分叉再匯合的結構會讓有些人覺得混亂而難以管理。如果你不希望?commit?歷史出現分叉,可以用?rebase?來代替?merge。

rebase?,又是一個中國人看不懂的詞。這個詞的意思,你如果查一下的話:

哈?玩個 Git 就彎了?

其實這個翻譯還是比較準確的。rebase?的意思是,給你的?commit?序列重新設置基礎點(也就是父?commit)。展開來說就是,把你指定的?commit?以及它所在的?commit?串,以指定的目標?commit?為基礎,依次重新提交一次。例如下面這個?merge:

git merge branch1

如果把?merge?換成?rebase,可以這樣操作:

git checkout branch1 git rebase master

可以看出,通過?rebase,5?和?6?兩條?commit?把基礎點從?2?換成了?4?。通過這樣的方式,就讓本來分叉了的提交歷史重新回到了一條線。這種「重新設置基礎點」的操作,就是?rebase?的含義。

另外,在?rebase?之后,記得切回?master?再?merge?一下,把?master?移到最新的?commit:

git checkout master git merge branch1

為什么要從?branch1?來?rebase,然后再切回?master?再?merge?一下這么麻煩,而不是直接在?master?上執行?rebase?

從圖中可以看出,rebase?后的?commit?雖然內容和?rebase?之前相同,但它們已經是不同的?commits?了。如果直接從?master?執行?rebase?的話,就會是下面這樣:

這就導致?master?上之前的兩個最新?commit?被剔除了。如果這兩個?commit?之前已經在中央倉庫存在,這就會導致沒法?push?了:

所以,為了避免和遠端倉庫發生沖突,一般不要從?master?向其他?branch?執行?rebase?操作。而如果是?master?以外的?branch?之間的?rebase(比如?branch1?和?branch2?之間),就不必這么多費一步,直接?rebase?就好。

總結一下,rebase?指令可以改變?commit?序列的基礎點。它的使用方式很簡單:

git rebase 目標基礎點

需要說明的是,rebase?是站在需要被?rebase?的?commit?上進行操作,這點和?merge?是不同的。

總結

以上是生活随笔為你收集整理的不喜欢 merge 分叉,那就用 rebase 吧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。