[英]Git 'merge' by creating a new checkin based on another branch
我有一個git分支dev
,這正是我想要另一個git分支master
的位置。 master
有一些修補程序,它們在將來都比兩者的共同祖先更遠,因此此命令鏈會產生復雜而愚蠢的合並沖突:
git checkout master
git merge dev # Complicated merge conflicts. Boo hiss.
我想做的是在具有dev HEAD狀態的master上進行新提交。 從那時起,事情可以以更加理智的方式進行
例:
dev: A ---> B ---> C ----> D
master: A ---> Y ---> Z ----> *
A是我的共同祖先。 Y和Z是沖突的修補程序更改,因此D,A和Z之間的三向合並是一團糟。
最后我想要這個結果:
要在master上進行新提交,使其完全匹配dev上的內容,可以執行以下操作:
git checkout dev # Get the working directory we want.
git symbolic-ref HEAD refs/heads/master # Move HEAD to master without changing
# index or working directory.
git commit # Create the new commit on master.
這將創建一個與dev分支分開的全新提交。
我的靈感來自這里: https : //stackoverflow.com/a/6070417/2348315
如果遵循此步驟,則開發人員和管理員之間的合並提交將需要解決這些單獨的歷史記錄。 在此操作之后立即創建合並提交應該沒有沖突,但是必須是合並提交而不是快速合並。
如果您正在尋找變化,並陷入了您要以描述方式解決的沖突情況,則此方法將很有意義。 如果您的工作流是要合並更改,那么@Cupcake的merge -s ours
方法似乎更合適。
有關重置很棒的書gitpro的詳細信息: http ://git-scm.com/2011/07/11/reset.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.