在一个repo中,我有一个提交(HEAD后面约3个),它有大量的文件删除,这些文件删除被意外暂存并包含在提交中。根据文件类型,它们在执行git log --stat
时显示为以下任一项:
path/to/some/file | Bin 22522 -> 0 bytes
path/to/another/kind/of/file | 1 -
我想撤消这些删除操作,并且不会在我的提交中出现任何删除。 (注意:我没有试图隐藏删除,所以如果有一种方法可以反转它们,那也没关系。我只是不想让我的PR合并到这些文件删除中。)< / p>
如果在撤消文件删除后我应该做些什么来更新遥控器,这也会有所帮助。
答案 0 :(得分:3)
这与移动HEAD无关,而是有选择地取消(在Git linguo中,“reverting”)来自提交的一些文件。
在您的情况下,@~3
提交包含您不想要的删除,但还其他文件(您可能不想还原)。
git revert --no-commit @~3 # Revert, don't commit it yet
git reset # Unstage everything
# add only the files you need (ie the one created, not the ones modified)
git add $(git ls-files -o --exclude-standard)
在恢复 all 提交@~3
后,您希望仅选择未跟踪的文件(即git revert再次创建的文件,因为这些创建取消了已删除的内容在@~3
)
请参阅“Git add only all new files, not modified files”。