Git还没有恢复早先的状态

时间:2011-09-09 11:49:15

标签: git git-revert

很久以前我在我的项目中添加了一个带有一组文件的文件夹abc,并使用修订版xyz进行了提交。 经过多次提交,有人用git rm -r abc删除了该文件夹。 在此之后,也有很多提交。

现在我需要取回文件夹abc。我做了

git revert xyz

在此之后,我可以找到文件夹xyz,但并不是提交xyz中添加的所有文件都存在。

我做错了什么?我不想重置,因为我想保持提交xyz和现在之间的历史。

2 个答案:

答案 0 :(得分:5)

你真正想要的是:

git checkout xyz -- abc

这就是说“让我获取路径abc中的内容版本,就像它在提交xyz中一样”。这样,您将使文件夹恢复到您提交的状态,但是您不会触及任何其他可能已经修改过的文件。

(如果您明确指定了提交,则不需要--,除非提交的名称恰好也是项目中的文件名。例如,如果您要检查HEAD指向的提交中名为master的文件的版本,您需要执行git checkout master -- HEAD [只需节省时间,不要将您的名字命名为分支和标记与文件相同的内容。]

您不希望git revert xyz,因为这是用于创建反转其他提交的提交,而您显然不希望反向 添加文件首先。

答案 1 :(得分:3)

git revert xyz不会将您的代码恢复到处于修订版xyz的状态 - 它会创建一个新的提交撤消在{{1 }}。您可以尝试xyz重播git cherry-pick --no-commit xyz中完成的更改(如果您遗漏xyz,它将自动成为新提交,但也许你不希望在--no-commit)中完成所有事情。