[英]How to reset the changes that were pushed to git and then merged with another branch?
我錯誤地對git進行了一些更改。 然后將這些更改與另一個分支合並。 由於合並,我無法重置初始分支中的更改。
我應該如何重置被錯誤推送的更改?
您可能會考慮恢復到良好狀態並推送可修復錯誤的提交。 這樣可以將錯誤保留在歷史記錄中,但需要與拉扯您的無效更改的任何人進行較少的協調,並且可以簡單地通過合並來修復其他分支。
重置和推送共享分支的問題在於,破碎的更改仍會出現在其他人的存儲庫和分支中。
如果您確實要重置分支:
假設master
分支是從一個commit開始的,我們將其稱為good
,在此基礎上添加的commit將被稱為broken
。 feature
分支是從master
分支出來的,從我們before
調用before
的幾次提交開始,然后在一次我們稱為merge-broken
的提交中與master
(已broken
) merge-broken
,在此之上進行了其他提交,我們稱它們after-broken
。
這些分支的固定方法如下,丟棄了對master
和feature
分支的其他更改:
git branch -f master good
git branch -f feature before
git checkout feature
git merge master
git cherry-pick merge-broken..after-broken
這些更改可以向上游推送,但是如上所述,在公共或共享回購中這可能很危險:
git push origin +master +feature
其他用戶可能需要使用--force
標志拉那些分支,並且可能需要以相同的方式調整其本地分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.