git"revert"当前目录

pil*_*ght 31 git version-control revert reset git-checkout

在svn中,可以执行svn revert ./*当前目录和仅当前目录的还原.

相当于svn revert只有当前目录被还原的git是什么?

我知道有git reset --hard,但它会恢复所有内容,而不仅仅是当前目录.

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

fge*_*fge 57

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

git checkout <refspec> -- path/to/directory  # or path/to/file
Run Code Online (Sandbox Code Playgroud)

<refspec>例如,在哪里可以HEAD是当前的工作提交.请注意,该checkout命令的使用将影响工作树但不影响索引.

git revert用于"恢复提交",并且由此,不应该理解提交从树中消失(它会对历史造成严重破坏 - 如果你想要,请查看git rebase -i).还原提交包括反向应用作为参数提交给树的提交的所有更改,并使用更改创建新提交(使用默认提交消息,您可以修改).


Shi*_*hah 24

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

git checkout -- .
Run Code Online (Sandbox Code Playgroud)

请参阅此答案:https: //stackoverflow.com/a/16589534/207661


Dav*_*nce 6

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

  • 切换到您想要将特定子目录还原到的分支
  • 复制您要还原到桌面的子目录
  • 切换回您的分支
  • 用要复制到桌面的子目录覆盖要替换的git目录中的子目录

  • @saeraphin也许我误解了一些东西,但是这怎么不起作用?当我还是git新手时(也许现在仍然是),它工作得很好并且易于理解。我不使用subversion,也不知道“ svn revert”是做什么的,但是可以将子目录还原到另一个分支或另一个提交的目录,这可行。对于使用该终端的新手来说也并不可怕。 (2认同)