git - 删除/撤消 Sourcetree 上的 merge

标签 git git-merge atlassian-sourcetree

我在我的项目中做了很少的更改(我在一个远程分支上工作,而不是在主分支上工作),我提交了它们并在 BitBucket 上创建了一个 pull 请求并将分支 merge 到主分支上。我忘记在提交后推送我的更改。现在,在尝试将当前分支切换到我的远程分支并恢复到 merge 之前的提交之后,我设法取回所有更改并将它们备份到我系统的其他地方。我现在想做的是撤消我所做的错误 merge 。每次单击 merge 并选择“反向提交”时,我都会收到以下错误消息:

"error: Commit is a merge but no -m option was given.

fatal: revert failed"

Twig 现在看起来像这样:

enter image description here

我想删除 merge 并将其置于不再显示 master(4 behind) 的状态。

最佳答案

这个方法是基于历史删除:

  1. 检查你犯错的分支
  2. 右键单击要将分支重置为的提交
  3. 点击“将当前分支重置为此次提交”
  4. 选择“硬”模式,点击“确定”
  5. 不幸的是,您需要终端来执行此操作。 在终端中键入 git push origin name_of_branch --force(您可能需要为此输入您的 git repo 用户名和密码接受命令)

更新:当前版本的源代码树支持强制推送。这意味着您不需要使用第 5 步中提到的命令!按下标记为“force”的复选框可见。它通常被禁用。

如何启用强制推送复选框:

  1. “工具”(在屏幕顶部的蓝色栏中)
  2. “选项”
  3. “Git”选项卡
  4. “启用强制推送”(第 2 部分)
  5. “好的”

推送时选中该复选框以修复源服务器上的错误。

这可能是最简单的方法,但由于它是基于删除历史记录,如果其他人正在处理该项目,请确保让他们都知道你在做什么,这样你就不会破坏任何人的 git 存储库。

更新 2:如果您使用 Visual Studio Code 作为代码编辑器,我强烈建议安装“Git Graph” 扩展。它几乎可以让您做 Source Tree 允许您做的所有事情,但您可以直接在代码编辑器中完成!使用 Git Graph 执行此操作的步骤与在源代码树中执行此操作的步骤大致相同。

关于git - 删除/撤消 Sourcetree 上的 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22537097/

相关文章:

git 命令发出远程跟踪分支的名称

git - 将已删除的文件从分支 merge 回主控

atlassian-sourcetree - 是否在Sourcetree中将Devart的代码比较设置为自定义差异和合并工具?

git - git rebase 如何/为什么避免 merge 提交?

javascript - 如何在 VSC 中强制使用单引号

git - 如何在现有仓库中创建子模块

git - 如何打印当前分支以外的分支的日志?

git - 如果子分支基于父分支,该将子分支 merge 到哪里?

git - 有没有办法 git stash 文件的特定行?

git - 在 git 中,如何增加 merge 的上下文?