所有东西都在主分支上。
我们做了一个改变。它不起作用。
我们退回了三次提交,创建了一个分支来测试另一个想法。
那起作用了。
现在我们希望分支是master。
我想我们应该合并它们,但是我们在master上的三个提交中不需要任何东西。如何继续?
将master
分支硬复位到另一个分支:
# from master
git reset --hard other
或者,如果您知道other
分支头部的SHA-1哈希值,您也可以硬重置为:
# from master
git reset --hard 1a2b3c4d
git checkout master
git reset --hard @~3
git rebase <new branch that works>
HTH
如果您想从版本控制历史记录中清除失败的尝试,采用这个解决方案。但是,如果您想保留提交历史,或者您只是不能强制推送到主分支,您可以执行以下操作,这将为revert
和merge
创建一个额外的提交:
git checkout master
git revert HEAD~3
git merge your_other_branch
您需要编辑合并策略
git checkout new_branch
git merge --strategy=recursive -Xours master
git checkout master
git merge new_branch
或者,您可以从主分支回滚更改,然后将新分支重新基于主分支。
编辑:要添加到最后一个语句,命令将是:
git checkout master
git revert HEAD~3
git rebase new_branch