【问题标题】:Fixed double accidental merge and push in git修复了 git 中的双重意外合并和推送
【发布时间】:2023-04-06 22:38:01
【问题描述】:

我严重弄乱了我的一个项目的 git 存储库,需要帮助修复它。

这就是我想要的:

alpha      E--
          /
master --A--
         |\
beta     | B--C--
          \
gamma      D--

总共四个分支,三个不稳定分支和一个主分支。

然而,不知何故,我创建了一个意外的合并,然后当我试图撤消它时另一个错误的合并。所以现在我的存储库看起来像这样:

master --A--E--------Y
         |          / \
beta     |   X--B--C   Z--C'
          \ / 
gamma      D--B?--C?

根本没有 alpha 分支(不知何故,即使我确实做了一个git checkout -b alpha),beta 分支处于非常奇怪的反转状态,并且 gamma 分支上没有 beta 分支的提交任何明显的合并。

幸运的是,我确切地知道每个文件在每个分支上应该是什么样子,并且我可以在我的团队恢复行动之前在遥控器上再重写几个星期的历史记录。

如何在不丢失工作的情况下创建 4 个独立的分支而不是合并后的混乱?

【问题讨论】:

  • git checkout <branch>; git <reset> --hard <pos>; git cherry-pick --no-commit <sha1> ?

标签: git merge git-revert


【解决方案1】:

假设示例提交标识符准确地反映了您提交的真实安排:

从起点:

    master --A--E--------Y
             |          / \
    beta     |   X--B--C   Z--C'
              \ / 
    gamma      D--B?--C?

1.

git checkout master
git reset --hard A

    master --A
             |\-E--------Y
             |          / \
    beta     |   X--B--C   Z--C'
              \ / 
    gamma      D--B?--C?

2.

git checkout gamma
git reset --hard D

    master --A
             |\-E--------Y
             |          / \
    beta     |   X--B--C   Z--C'
              \ / 
    gamma      D

3.

git checkout -b alpha
git reset --hard E

    master --A
    alpha    |\-E
             |   --------Y
             |          / \
    beta     |   X--B--C   Z--C'
              \ / 
    gamma      D

4.

git checkout beta
git reset --hard C

    alpha      E
              /
    master --A
              \
    gamma      D
                \
    beta         X--B--C

git rebase --onto master X C

    alpha      E--
              /
    master --A--
             |\
    beta     | B"--C"--
              \
    gamma      D--

【讨论】:

  • 看起来应该可以了。但是,在我变基之后,如何让我的新分支结构反映在我的遥控器上?
  • @LambdaBeta 您进行强制推送。 git push --force origin alpha master gamma beta。确保没有其他人获取/拉取您正在处理的任何提交或分支。
猜你喜欢
  • 2016-07-12
  • 2016-06-09
  • 2021-12-28
  • 2016-07-04
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
相关资源
最近更新 更多