Ram*_*ain 52 git git-merge atlassian-sourcetree
我在我的项目中进行了很少的更改(我在远程分支而不是主服务器上工作),我提交了它们并在BitBucket上创建了一个pull请求并将分支合并到master.我忘了在提交后推送我的更改.现在,在尝试将当前分支切换到我的远程分支并在合并之前恢复到提交之后,我设法将所有更改恢复并将其备份到系统中的其他位置.我现在要做的是撤消我所做的错误合并.每次我单击合并并选择"反向提交",我收到以下错误消息:
"错误:提交是合并但没有给出-m选项.
致命:恢复失败"
分支现在看起来像这样:
我想删除合并并将其带到一个状态,以便它不再说master(4 behind)
了.
Dan*_*non 85
此方法基于历史记录删除:
git push origin name_of_branch --force
为终端(您可能需要输入您的混帐回购协议的用户名和密码,它接受命令)如果稍后会弹出一条消息,询问您是要中止该rebase还是继续.点击"继续".如果您中止,合并将再次出现在您的本地副本上.
这可能是最简单的方法,但由于它是基于历史删除,如果其他人正在处理项目,请确保让他们都知道你在做什么,这样你就不会破坏任何人的git存储库.
小智 36
非常不幸的是,SourceTree不会让您轻松恢复合并提交(至少在Windows SourceTree 1.5.2.0中).但是,可以从命令行轻松完成还原合并,但是您是否希望通过添加另一个与合并提交结果相反的提交来还原合并,或者您是否只想从历史记录中删除合并提交共?
如果您不master
与其他人共享您的分支,最简单的方法是简单地执行硬重置以从历史记录中删除合并提交.但是,如果其他人已经拥有该合并提交的副本,那么当他们尝试将其副本master
与您的重写版本重新同步时,您将为他们创建额外的工作
.
所以你需要弄清楚你想要使用哪个选项.我将使用命令行为两者提供步骤:
git checkout master
git push origin master --force
Run Code Online (Sandbox Code Playgroud)
这将origin/master
使用本地master
分支的当前状态覆盖合并提交,从而删除合并提交.
git checkout master
git merge origin/master
git revert -m 1 HEAD
Run Code Online (Sandbox Code Playgroud)
这将带来当地master
的同步与分支origin/master
,然后你可以添加一个反向告诉提交git revert
了1 日母公司是应该考虑的"主线"父之一,它会造成相反的承诺相对变化从另一个父提交中引入.
如果稍后您决定再次从另一个父进行更改,那么您将需要添加另一个还原提交,以恢复您刚刚进行的还原提交(称为"还原还原"的技术).
也可以看看: