协慌网

登录 贡献 社区

在 Git 中撤消一个文件的工作副本修改?

在最后一次提交之后,我在工作副本中修改了一堆文件,但我想撤消对其中一个文件的更改,就像将其重置为与最近提交的状态相同。

但是,我只想撤消单独一个文件的工作副本更改,而不是其它任何内容。

我怎么做?

答案

您可以使用

git checkout -- file

您可以在没有-- (如 nimrodm 建议)的情况下执行此操作,但如果文件名看起来像分支或标记(或其他修订标识符),则可能会混淆,因此使用--最好。

您还可以查看文件的特定版本:

git checkout v1.2.3 -- file         # tag v1.2.3
git checkout stable -- file         # stable branch
git checkout origin/master -- file  # upstream master
git checkout HEAD -- file           # the version from the most recent commit
git checkout HEAD^ -- file          # the version before the most recent commit
git checkout <commit> <filename>

我今天使用了这个,因为我意识到当我升级到 drupal 6.10 时,我的 favicon 已被覆盖了几次提交,所以我不得不把它取回来。这是我做的:

git checkout 088ecd favicon.ico

只是用

git checkout filename

这将使用当前分支中的最新版本替换 filename。

警告:您的更改将被丢弃 - 不保留备份。