在一个 repo 中,我有一个提交(在 HEAD 后面大约 3 个)有大量文件删除被意外暂存并包含在提交中。根据文件类型,它们在执行 git log --stat
时显示如下:
path/to/some/file | Bin 22522 -> 0 bytes
path/to/another/kind/of/file | 1 -
我想撤销这些删除,并且不让它们出现在我的提交中。 (注意:我并不是要 stash 删除,所以如果有一种方法可以逆转它们,那也很好。我只是不希望我的 PR merge 到这些文件删除中。)
如果在恢复文件删除后我应该做些什么来更新 Remote ,那也会有帮助。
最佳答案
这与移动 HEAD 无关,而是有选择地取消(在 Git 语言中,“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)
在这里你想要,在恢复所有提交@~3
之后,只选择未跟踪的文件(即由git revert再次创建的文件,因为那些创建取消在@~3
中删除的内容。
参见“Git add only all new files, not modified files”。
关于git - 如何撤消历史提交中的文件删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943757/