【问题标题】:Undo a git merge when it has been pushed推后撤消 git 合并
【发布时间】:2016-06-02 14:33:21
【问题描述】:

如果我在合并后已经推送到 master,如何撤消合并? 这是我的步骤:

  1. git add -A

  2. git commit -m "some message"

  3. git fetch origin master:master

  4. git rebase master (resolve merge conflicts)

  5. git push -f origin my local branch

我想回到第 2 步时的状态

【问题讨论】:

  • 你可以做git checkout <commit no>,然后回到之前的状态。从git log 获取commit id,然后一旦你执行checkout,代码就会处于分离状态。所以要解决这个问题,请执行git checkout -b old_branch。然后推送git push -f origin mylocalbranch
  • 这并不总是有效的。 @Sahil
  • 我实际上使用了变基而不是合并。我编辑了问题。
  • 在你的回答中 old_branch 和 mylocalbranch 有什么区别?

标签: git version-control git-push


【解决方案1】:

强制推送,这意味着您覆盖了遥控器上的更改。 您的计算机无法修复它;但是,如果在您强制推送之前有另一台计算机具有本地副本,您可以从该计算机强制推送并覆盖您的强制推送。

Git 的 push --force 是破坏性的,因为它是无条件的 用您在本地拥有的任何内容覆盖远程存储库, 可能会覆盖团队成员在 与此同时。 -Atlaissan Git Resource

在某些情况下,签出旧提交然后强制推送可能会起作用,但我怀疑这可能不适用于您的情况,因为您必须强制推送更改。

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 2011-01-24
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多