簡體   English   中英

Git:還原后再次合並分支

[英]Git : Merge a branch again after a revert

請考慮以下git樹:

local repo:
          C---D---E       feat
         /         \
    A---B---F---G---H---I dev

origin remote repo:
          C---D---E   feat
         /         \
    A---B---F---G---H dev

我們有一個git repo,帶有一個遠程的源。 有一個來自dev的分支,稱為feat,在提交幾次后便合並回dev。 問題在於feat分支對dev分支進行了很多修改,並帶來許多沖突,因此我們決定以feat源代碼為准,並在合並時使用-X選項。 我們過快地檢查了結果,然后將其推到遙控器上。 但是我們犯了一個錯誤,在合並時使用-Xours而不是-Xtheirs ,因此所有沖突都是使用dev分支代碼而不是feat分支代碼自動解決的。 所有這些都被推到了起源。 這是H提交。

我在當地所做的是git revert HEAD ,這給了我承諾撤消為H提交。 從那里,我嘗試再次合並feat分支,使用正確的-Xtheirs選項,並且git告訴我樹已經是最新的,但是feat分支中的修改未出現在源代碼中。

我試圖從一個壯舉,一個救援分支中分支出來,然后將其合並到開發人員中,但是它做了同樣的事情。 我嘗試在feat分支上進行一些小的更改,然后合並到dev中,但是只有這些小的更改才進入dev。

所以這是我的問題:我如何才能將專長分支中完成的工作恢復為開發人員?

我只是想讓開發人員回到過去,然后重試合並:

git checkout dev
git reset --hard G # provide sha1 of the revision of G... and use with care, you know what they say of git reset hard
git merge -Xtheirs feat # this is what you wanted to do, right?
git push origin -f dev # set remote dev to have the rewritten history of local dev

Git允許您重寫歷史記錄。 如果有影響(修訂版本完全不同,因此您實際上是在分歧。...如果其他人已經在舊分支上工作,那么他們將不得不將工作移到新分支之上,依此類推...這是可能的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM