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