显示在 Git 的索引中并在工作副本中更改的文件

Show files that are in Git's index and changed in the working copy

我有一个 Git 预提交挂钩,它会去除空格并将修改后的文件留在工作副本中,这样它就不会像 git add -p 那样踩踏部分添加。

如果我从多个更改中提交了一个文件,并且纠正了空格,那么我在工作副本中更改了两个文件和一个暂存文件(也在工作副本中,但暂存更改有空格错误):

vi fileWithBadWS.txt  # leave bad whitespace
vi fileWithGoodWS.txt # don't leave bad whitespace
vi unrelatedFile.txt

git add fileWithBadWS.txt fileWithGoodWS.txt 
git commit -m "Commited files, one with bad whitespace" # pre-commit hook fails

回购现在看起来像这样:

On branch master
Changes to be committed:

        modified:   fileWithBadWS.txt  # bad WS
        modified:   fileWithGoodWS.txt

Changes not staged for commit:

        modified:   fileWithBadWS.txt   # fixed WS
        modified:   unrelatedFile.txt                                 

我可以使用:

我如何才能 看到在工作副本中修改和暂存的文件(即仅fileWithBadWS.txt)?

注意:此问题使用空格和预提交挂钩作为示例,但更普遍地适用于一些文件已暂存而另一些未暂存且有一些重叠的情况。

这个怎么样?

git diff --name-only --staged | xargs git diff --name-only

这将向您显示在工作树中暂存和更改的文件。

git diff `git diff --name-only --cached`

有两部分:

git diff --name-only --cached - 获取暂存文件的文件名

git diff file_list - 列出这些文件的更改