我有一个分支正在进行开发。
我的同事不小心把他们的分支合并到了我的分支上,现在所有的提交都乱了。
由于有数百个提交,我不能使用cherry pick。
我该如何只保留我的更改在分支中?
基本上,我正在寻找一种方法,只保留我的提交,丢弃其他用户所做的任何提交。
我有一个分支正在进行开发。
我的同事不小心把他们的分支合并到了我的分支上,现在所有的提交都乱了。
由于有数百个提交,我不能使用cherry pick。
我该如何只保留我的更改在分支中?
基本上,我正在寻找一种方法,只保留我的提交,丢弃其他用户所做的任何提交。
阶段1:定位合并提交(如果您在错误合并之后没有进行任何操作,请直接进入第2阶段,并将HEAD^
用于<bad-commit>
)
# in case you're not presently on your branch
git checkout your-branch
# now we need to spot the merge commit where things went awry,
# it's probably not too far in your history, so spot its commit hash in the log
git log --oneline
<bad-commit>
。# Rewind history to the point just BEFORE the bad merge, so mind the caret
git reset --hard <bad-commit>^
此时,您的分支处于合并之前的状态,但是您需要强制推送它到远程仓库以反映这个新历史记录,因此请确保事先通知同事,然后执行操作。
git push --force origin HEAD
(由于您不是该项目上的唯一参与者,也许可以看看--force-with-lease
)
git
没有这个功能。 - waqasgard