我想保留A-G-H-M-N的歷史和擺脫-B-C-d-E-F的歷史。 ...歷史的b-c-d-e-f部分相當於g-h部分,我想刪除b-c-d-e-f一部分。我該怎麼做?
---a-----------g--h----m--n---
\--b--c--d--e--f--/
我並不完全相信這是一個好主意。如果a-g-h-m和a-b-c-d-e-f-m相等,則合併不會發生。你可以看看與git diff h f
的差異並決定。
但是,這裏是如何做到這一點。
您需要消除m
合併。你想是這樣的:
---a-----------g--h----n
\--b--c--d--e--f
要做到這一點,你需要移動主回h
,然後移植到n
h
。分行負責人(master
是分行負責人)隨着git reset --hard
移動。嫁接是用git cherry-pick
完成的。
git checkout master
git reset --hard h
移動master
回h
。
git cherry-pick n
repshches n
轉到h
。
請注意,這將導致n
有一個新的提交ID。如果n
被推送,這會對其他貢獻者造成問題。任何擁有n
的人在下次嘗試推或拉時都會收到錯誤消息,並且需要git pull --force
。
你的意思是,你想擺脫合併引入的所有變化? – mipadi
Git是一個DAG指向的非循環圖。 Git中沒有循環。這看起來像一個正常的合併歷史。 – Makoto
這是一個正常的歷史,但歷史的b-c-d-e-f部分相當於g-h部分,我想刪除b-c-d-e-f部分。 – budan