为什么git还原我文件系统上的删除文件?

时间:2013-07-02 01:58:35

标签: git

我将一个文件提交到我的本地存储库作为撤消我的提交的测试我运行了命令git revert {hash},然后在git的历史记录中记录了一个恢复消息,即Revert "Commit of file 1" This reverts commit {hash}

一旦我运行命令git revert,它也会从我的工作树/空间中删除该文件。

  1. 为什么删除文件?
  2. 我尝试通过运行命令git checkout {hash} -- /path/to/recovery来恢复已删除的文件。它确实恢复了文件,但我不确定是否可以采用它。
  3. 如果我运行命令git status,它会告诉我正在跟踪文件1但未提交。那是为什么?

2 个答案:

答案 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命令只是创建了一个尚未在您所在的修订版中签入的新文件。