首页 > 解决方案 > git checkout 不撤消提交的文件

问题描述

我已经编辑、添加和提交了一些文件。当我运行时:

git diff --stat --cached origin/development

其中一个文件不应该被更改,我想撤消对该文件的更改。

根据下图,我运行:

git checkout file_name

但:

git difftool --cached origin/development

仍然显示文件包含更改。

如何撤消对一个文件的更改以及为什么git checkout不起作用?

在此处输入图像描述

标签: git

解决方案


我想你在这里git diff感到困惑git show

你还没有提交,也没有进行任何更改

利用git checkout your-file

您尚未提交,但您已经进行了更改

利用git reset HEAD your-file

你已经提交了

确保您没有任何待处理的更改(存储或丢弃它们),然后复制您的提交哈希(参见 COMMIT_HASH):

git reset HEAD~1
git checkout your-file
git add your-other-file ...
git commit -c COMMIT_HASH

注意:这假设提交是您分支的顶部

如果您的提交不是您分支的顶部,我建议您熟悉交互式变基,当且仅当您不接触公共分支时。即不要改写公共历史。


推荐阅读