我正在尝试撤销对特定文件的本地更改。目前还没有任何行动。

当我想恢复所有更改时,我可以执行git revert—reset HEAD。但是,在本例中,我不想将所有更改还原到所有文件。

它不清楚或明显对我来说,如何恢复只是一个文件,即使在阅读git-revert(3)手册页后:

NAME
       git-revert - Revert some existing commits

SYNOPSIS
       git revert [--[no-]edit] [-n] [-m parent-number] [-s] <commit>...
       git revert --continue
       git revert --quit
       git revert --abort
...

这类似于如何在git上的旧提交中恢复特定文件,但没有执行任何提交。与OP不同,OP希望返回任意提交,我只想让文件返回到MASTER的副本。

在SVN下,我只删除有问题的文件,然后执行SVN更新。

如何将更改还原到单个文件?


你不希望git恢复。这将撤销先前的提交。你想要git checkout从master获取git版本的文件。

git checkout -- 文件名.txt

一般来说,当你想对单个文件执行git操作时,使用——filename。


git-checkout文档 git-revert文档


2020年更新

Git在2.23.0版本中引入了一个新的命令Git restore。因此,如果你有2.23.0+版本的git,你可以简单地git恢复filename.txt——这与git checkout——filename.txt做的事情是一样的。该命令的文档指出,它目前还处于试验阶段。

git-restore文档