我有一个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
)?
注意:这个问题使用空格和预提交挂钩作为示例,但更常见的是适用于任何情况,当你有一些文件被暂存时,有些则没有,有些重叠。
答案 0 :(得分:3)
这个怎么样?
git diff --name-only --staged | xargs git diff --name-only
这将显示在工作树中暂存和更改的文件。
答案 1 :(得分:1)
class TestComponent(Component):
def __init__(self, *args, **kw):
super().__init__(*args, **kw)
@listen_on('test')
def on_test(self, event):
print("self is " + str(self))
print("FF" + str(event))
self.on_test = on_test
有两部分:
git diff `git diff --name-only --cached`
- 获取暂存文件的文件名
git diff --name-only --cached
- 列出对这些文件的更改