如何撤销之前提交的删除操作:一个Git灾难。

3
我已经附上一张图片来说明我的问题。
在提交C中添加了数百个文件,在提交D中添加了几个文件。当D试图合并回开发分支时,出现了合并冲突。解决冲突的开发人员通过删除C中添加的所有内容来解决了冲突。此后,添加了几个提交,直到意识到删除了C中的内容为止。
现在我正在尝试将C中的添加内容重新放入代码流中。但是简单地将C合并到develop中不起作用,因为git历史记录显示C中的文件已在D中被删除。

enter image description here

我不知道如何在不查看C文件并将它们添加到新分支中,然后为该分支创建PR(这将很痛苦,因为有数百个文件)的情况下解决此问题。

另外,强制推送不可用。我们可以暂时获得它们,但是如果可能的话,我正在尝试避免让官方机构介入。

有人知道如何应对这种git灾难吗?


如果提交不太多,我会将它们提取为补丁分支,从C中获取最新的内容并重新应用所有内容。 - Kai Iskratsch
1
我会先开除那个一开始做这件事的人。我知道这并不能回答你的问题,但这样做可能会让你感觉更好... - Software Engineer
1个回答

0

也许可以克隆存储库并尝试 git cherry-pick <哈希值为c>

这应该会尝试添加在提交C中添加的所有文件。它可能会产生冲突并且不提交任何内容。然后,您可以查看冲突,并希望找出要提交的内容。

或者,如果您只想回到提交c或d后但有几个额外提交的状态,可以使用类似以下内容的命令:

git clone <url> #start with a fresh clone in case you mess it up more
git checkout <hash for d>
git reset master #if E is master
git add -A
git commit -m"get back to where we were after d"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接