3

我将一个文件提交到我的本地存储库作为撤消我的提交的测试我运行了该命令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 正在被跟踪但未提交。这是为什么?
4

2 回答 2

3

您可能正在寻找git reset HEAD^. 这将“撤消”最后一次提交,因为您的 repo 现在处于运行之前的状态git commit

git revert另一方面,将撤消提交中的所有更改。因此,如果您还原创建文件的提交,则该操作将被还原-> 文件被删除。

于 2013-07-02T09:47:12.823 回答
1

如果还原删除了文件,则意味着{hash}您还原的与{hash}最初添加的文件相同。文件没有丢失,您可以随时git checkout {hash} {file}git checkout -b tmpbranch {hash}找回文件。这两个命令做不同的事情,更多信息请参考 git help。

您的文件未被跟踪的原因是因为您运行的 checkout 命令只是创建了一个新文件,该文件尚未在您所在的修订版中签入。

于 2013-07-02T02:05:16.807 回答