我在我的项目中做了很少的更改(我在一个远程分支上工作,而不是在主分支上工作),我提交了它们并在 BitBucket 上创建了一个 pull 请求并将分支 merge 到主分支上。我忘记在提交后推送我的更改。现在,在尝试将当前分支切换到我的远程分支并恢复到 merge 之前的提交之后,我设法取回所有更改并将它们备份到我系统的其他地方。我现在想做的是撤消我所做的错误 merge 。每次单击 merge 并选择“反向提交”时,我都会收到以下错误消息:
"error: Commit is a merge but no -m option was given.
fatal: revert failed"
Twig 现在看起来像这样:
我想删除 merge 并将其置于不再显示 master(4 behind)
的状态。
最佳答案
这个方法是基于历史删除:
- 检查你犯错的分支
- 右键单击要将分支重置为的提交
- 点击“将当前分支重置为此次提交”
- 选择“硬”模式,点击“确定”
不幸的是,您需要终端来执行此操作。在终端中键入git push origin name_of_branch --force
(您可能需要为此输入您的 git repo 用户名和密码接受命令)
更新:当前版本的源代码树支持强制推送。这意味着您不需要使用第 5 步中提到的命令!按下标记为“force”的复选框可见。它通常被禁用。
如何启用强制推送复选框:
- “工具”(在屏幕顶部的蓝色栏中)
- “选项”
- “Git”选项卡
- “启用强制推送”(第 2 部分)
- “好的”
推送时选中该复选框以修复源服务器上的错误。
这可能是最简单的方法,但由于它是基于删除历史记录,如果其他人正在处理该项目,请确保让他们都知道你在做什么,这样你就不会破坏任何人的 git 存储库。
更新 2:如果您使用 Visual Studio Code 作为代码编辑器,我强烈建议安装“Git Graph” 扩展。它几乎可以让您做 Source Tree 允许您做的所有事情,但您可以直接在代码编辑器中完成!使用 Git Graph 执行此操作的步骤与在源代码树中执行此操作的步骤大致相同。
关于git - 删除/撤消 Sourcetree 上的 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22537097/