如何撤消以前提交的删除: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的新分支,然后重新应用所有干净的东西。我会首先解雇做这件事的人。我知道这无助于回答你的问题,但它可能会让你感觉更好。。。