Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何撤消以前提交的删除:Gitastrophy_Git_Git Merge_Merge Conflict Resolution - Fatal编程技术网

如何撤消以前提交的删除:Gitastrophy

如何撤消以前提交的删除:Gitastrophy,git,git-merge,merge-conflict-resolution,Git,Git Merge,Merge Conflict Resolution,我附上了一张图片来说明我的问题 在Commit C中添加了数百个文件。在Commit D中添加了一些文件。当D试图合并回develope时,出现合并冲突。解决冲突的开发人员删除了C中添加的所有内容。之后,在实现之前添加了几个提交 现在,我正在尝试将C中的添加内容重新添加到流中。但是简单地将C合并到develope是行不通的,因为git历史记录显示C中的文件在D中被删除 我不知道如何解决这个问题,而不梳理C中的文件,将它们添加到一个新的分支,并为该分支创建一个PR(这会很痛苦,有数百个文件) 此

我附上了一张图片来说明我的问题

Commit C
中添加了数百个文件。在
Commit D
中添加了一些文件。当
D
试图合并回
develope
时,出现合并冲突。解决冲突的开发人员删除了
C
中添加的所有内容。之后,在实现之前添加了几个提交

现在,我正在尝试将
C
中的添加内容重新添加到流中。但是简单地将
C
合并到
develope
是行不通的,因为git历史记录显示
C
中的文件在
D
中被删除

我不知道如何解决这个问题,而不梳理
C
中的文件,将它们添加到一个新的分支,并为该分支创建一个PR(这会很痛苦,有数百个文件)

此外,强制推送也不可用。我们可以暂时得到他们,但是be的官僚权力必须介入,所以如果可能的话,我会尽量避免


有人知道如何导航这个gitastrophy吗?

也许可以克隆repo并尝试
git cherry pick

这应该尝试添加在commit 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"
git clone#从一个新的克隆开始,以防你把它搞得更糟
git签出
git重置主机#如果E是主机
git添加-A
git commit-m“回到d之后的位置”

如果在d之后没有太多的提交,我只会将它们提取为c的新分支,然后重新应用所有干净的东西。我会首先解雇做这件事的人。我知道这无助于回答你的问题,但它可能会让你感觉更好。。。