我将一个文件提交到我的本地存储库作为撤消我的提交的测试我运行了命令git revert {hash}
,然后在git的历史记录中记录了一个恢复消息,即Revert "Commit of file 1" This reverts commit {hash}
一旦我运行命令git revert
,它也会从我的工作树/空间中删除该文件。
git checkout {hash} -- /path/to/recovery
来恢复已删除的文件。它确实恢复了文件,但我不确定是否可以采用它。git status
,它会告诉我正在跟踪文件1但未提交。那是为什么?答案 0 :(得分:3)
您可能正在寻找git reset HEAD^
。这将“撤消”最后一次提交,因为您的仓库现在处于运行git commit
之前的状态。
git revert
将撤消提交中的所有更改。因此,如果您还原创建文件的提交,则会还原该操作 - >该文件已被删除。
答案 1 :(得分:1)
如果还原删除了该文件,则表示您还原的{hash}
与首先添加该文件的{hash}
相同。该文件不会丢失,您可以始终git checkout {hash} {file}
或git checkout -b tmpbranch {hash}
来恢复该文件。这两个命令执行不同的操作,有关更多信息,请参阅git help。
您的文件未跟踪的原因是因为您运行的checkout命令只是创建了一个尚未在您所在的修订版中签入的新文件。