3

我有一个 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                                 

我可以用:

  • git diff看到fileWithBadWS.txtunrelatedFile.txt
  • git diff --cached查看暂存文件fileWithBadWS.txtfileWithGoodWS.

我怎样才能看到在工作副本中修改和暂存的文件(即只是fileWithBadWS.txt)?

注意:这个问题以空格和预提交钩子为例,但更普遍地适用于任何情况,当你有一些文件暂存而一些没有,有一些重叠。

4

2 回答 2

4

这个怎么样 ?

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

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

于 2016-03-11T13:17:29.167 回答
1
git diff `git diff --name-only --cached`

有2部分:

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

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

于 2016-03-11T13:20:59.463 回答