显示在 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
我可以使用:
git diff
查看 fileWithBadWS.txt
和 unrelatedFile.txt
git diff --cached
查看暂存文件 fileWithBadWS.txt
和 fileWithGoodWS
.
我如何才能仅 看到在工作副本中修改和暂存的文件(即仅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
- 列出这些文件的更改
我有一个 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.txt
和unrelatedFile.txt
git diff --cached
查看暂存文件fileWithBadWS.txt
和fileWithGoodWS
.
我如何才能仅 看到在工作副本中修改和暂存的文件(即仅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
- 列出这些文件的更改