git status显示修改的文件,但git diff没有显示任何内容。

5
我已经执行了"git reset --soft HEAD^"命令,以从提交中删除一些文件,但我遇到了一些问题。 "git status"命令显示文件列表(修改--绿色)。但是,如果我想使用"git diff"命令显示更改,git将不显示任何内容。 当我尝试通过"git checkout <FILE>"撤消更改时,它没有任何结果。
如果我打开其中任何一个文件,我会看到我的更改。
2个回答

4
我使用了“git reset --soft HEAD^”来消除提交中的一些文件,但是我遇到了一些问题。命令“git status”显示文件列表(已修改 - 绿色)。
根据文档,这是预期行为:
--soft 完全不会影响索引文件或工作树(但是像所有模式一样将头重置为),这会使你所有更改的文件处于“Changes to be committed”状态,就像git status所显示的那样。
将来请使用--mixed标志将文件移动到未暂存的区域。
git reset --mixed HEAD^

或者只需:

git reset HEAD^

由于默认使用--mixed,因此需要进行以下操作来解决当前的情况:

git reset HEAD -- <file>

这将使文件取消暂存,或者不带--<file应用于所有文件。

或使用git diff --cached显示已暂存文件的差异。


当我尝试通过“git checkout”撤销更改时,它没有任何结果。

git checkout <FILE>适用于未暂存的文件。


1
谢谢。我执行了git reset HEAD^(没有--soft选项),所有命令(diff、checkout)都按照我的预期工作。 - Marcin

1

git reset --soft 会保留文件的暂存状态,因此您需要使用 git diff --cached 来显示已暂存更改的差异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接