使用git post-commit钩子,是否有一种方法可以获取提交所影响的文件?

5

我在perforce存储库中使用git。 我想知道哪些文件受到git提交的影响,以便我可以使用post-commit挂钩轻松地打开这些文件进行编辑,从而使perforce服务器了解到更改。
是否有一种方法可以通过post-commit挂钩,在列表中获取受提交影响的文件?

3个回答

6

使用以下命令获取当前分支头部相对于$GIT_DIR的受影响路径:

git show --pretty=oneline --name-only HEAD | sed 1d

你可以使用以下命令得到完全相同的输出: git diff-tree --name-only -r HEAD | sed 1d 有趣的是,有几种方法可以实现这个功能... - bergyman
在这种情况下,选择使用git diff-tree而不是git show,因为前者是低级别的管道,而后者是面向人类使用的瓷器。请参阅http://progit.org/book/ch9-1.html。 - Greg Bacon

2

获取原始数据的方法:

git diff-tree HEAD


看起来这不会给我实际文件列表 - 它正在显示受影响的目录。 - bergyman
算了,通过挖掘diff-tree的选项,这可能有效。 - bergyman

1

你是在寻找git log --name-only吗?git log --name-status也会显示操作,例如M表示修改,A表示添加等。

最后,选项--pretty=oneline可能对于更容易解析很有用。

显然,你可能已经弄清楚了,但我为了以后的参考而添加了这个。


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