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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Git cherry-pick后再merge出现一个“奇怪”的现象

發布時間:2023/12/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git cherry-pick后再merge出现一个“奇怪”的现象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景描述:有的時候基于一個master branch拉出一個獨立feature分支做開發時,兩條分支都在并行開發,如果master分支增加了某些功能,解決了某些關鍵bug,而獨立feature分支不需要所有的增加的commit,只需要某一筆的修復,此時首先想到的就是單獨cherry-pick該筆commit,然而后續如果再次將該feature merge回master,“奇怪”的現象發生了….

舉例說明:

git倉庫以ngnix代碼為例,不知道什么時候clone的代碼,分支還在unstable branch上。。。

  • 以unstable分支為基礎checkout一個test1分支。
  • 在unstable分支上提交一筆commit bb3200604fcd3cefe26fb23bd6747f5563f514ac
  • 在test1 branch上cherry-pick該筆commit,commit id為9b97d6038a14e348f50a7b44f2a0a29af54aa820
  • 回到unstable分支,merge test1 branch,出現下面的現象:

為什么感到”奇怪“

  • 起初我的想法時merge合并后,不會出現merge commit,也只會存在同樣的一筆commit,這樣看起來會很清爽,而如果出現兩筆一模一樣的commit,看起來會很疑惑。雖然代碼沒有任何問題,而且如果在提交多筆commit后再merge,大部分人都不會主要到這個現象,所以應該很少人主要到這個“問題”。
  • 由于個人多少對代碼有點潔癖,當發現這個現象時蠻奇怪的,為什么git不能智能記錄兩個branch cherry-pick的過程,在merge時只保留一個(最好是master branch上的)commit?(這點是完全可以做到的啊),不過事實就是目前的狀態了。

為什么會這樣?

  • cherry-pick在Git中的處理應該只是將一個commit的修改重新add, commit,push到另一個branch上,并沒有記錄之間的關聯。
  • 當merge時,認為另外一個branch只是做了完全相同的修改,并沒有沖突,所以完整的保留兩個branch上的commit。

后續如何處理

  • 雖然以上的解釋很充分,原理上完全沒有問題,不過對于這樣的兩筆一模一樣的commit,感官上還是不爽的,所以我決定盡量不在需要merge回去的branch上cherry-pick父branch上的commit了。

總結

以上是生活随笔為你收集整理的Git cherry-pick后再merge出现一个“奇怪”的现象的全部內容,希望文章能夠幫你解決所遇到的問題。

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