修复了双意外合并和推入git

修复了双意外合并和推入git,git,merge,git-revert,Git,Merge,Git Revert,我把我的一个项目的git存储库搞砸了,需要帮助修复它 这就是我想要的: alpha E-- / master --A-- |\ beta | B--C-- \ gamma D-- 共有四个分支,三个不稳定分支和一个主分支 然而,不知何故,我创建了一个意外的合并,然后当我试图撤销它时又创建了一个错误的合并。现在,我的存储库如下所示: master --A--E--------Y |

我把我的一个项目的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个独立的分支而不是合并的分支?

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

从一开始:

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

二,

三,

四,


git校验;git——硬的;git cherry pick--不提交
?看起来应该可以工作。在我重新设置基础后,如何让我的遥控器反映我的新分支结构?@LambdaBeta你做一个力推<代码>git push--强制原点alpha主gamma beta。确保没有其他人获取/拉取了您正在处理的任何提交或分支。
git checkout master
git reset --hard A

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

    master --A
             |\-E--------Y
             |          / \
    beta     |   X--B--C   Z--C'
              \ / 
    gamma      D
git checkout -b alpha
git reset --hard E

    master --A
    alpha    |\-E
             |   --------Y
             |          / \
    beta     |   X--B--C   Z--C'
              \ / 
    gamma      D
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--