41

在 svn 中,可以svn revert ./*在其中还原当前目录并且仅还原当前目录。

svn revert仅恢复当前目录的 git 相当于什么?

我知道有git reset --hard,但它会还原所有内容,而不仅仅是当前目录。

我将如何仅恢复 git 中的当前目录?

4

4 回答 4

77

就像@vcsjones 所说,这里的解决方案是git checkout

git checkout <refspec> -- path/to/directory  # or path/to/file

<refspec>例如,可以在哪里be HEAD,即当前的工作提交。请注意,该checkout命令的这种用法会影响工作树,但不会影响索引。

git revert用于“恢复提交”,因此,不应理解提交从树中消失(它会对历史造成严重破坏——如果你愿意,请查看git rebase -i)。恢复的提交包括将作为参数给出的提交的所有更改应用到树,并使用更改创建一个提交(使用默认提交消息,您可以修改)。

于 2013-01-02T16:23:09.827 回答
35

转到要还原的文件夹并执行以下操作:

git checkout -- .

在此答案中查看更多信息: https ://stackoverflow.com/a/16589534/207661

于 2017-02-05T08:49:18.963 回答
7

当我还是一个 git 新手(并且害怕终端)时,我发现最简单的方法是:

  • 切换到要将特定子目录还原到的分支
  • 将要还原的子目录复制到桌面
  • 切换回你的分支
  • 用复制到桌面的子目录覆盖 git 目录中要替换的子目录
于 2016-02-25T15:26:38.283 回答
0

如果您想从特定目录递归执行:

git checkout -- ./*
git checkout -- mydir/*
于 2020-11-23T18:41:52.627 回答