在git post-merge hook中列出已更改的文件

mck*_*eed 5 git githooks

有没有办法让合并后的钩子获得合并改变的所有文件的列表,即使它是快进的?

ruv*_*vim 8

也可以使用ORIG_HEADHEAD 快捷方式:

git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD
Run Code Online (Sandbox Code Playgroud)

(另请参阅:列出Git中提交的所有文件)


Cas*_*bel 3

我认为此时你最好的选择就是重新登录。如果您刚刚快进,HEAD 的引用日志的第一行将如下所示:

63e21fb HEAD@{0}: merge origin/master: Fast-forward
Run Code Online (Sandbox Code Playgroud)

因此,您应该能够仅打印第一行 ( git reflog -n 1),检查它是否匹配merge .*: Fast-forward$,如果匹配,则执行git diff HEAD@{1} HEAD。(您确实想查看引用日志以验证是否存在快进合并,除非您可以从脚本中确信这是现在唯一的可能性。)

  • 也许我错过了一些东西,但沿着这些思路,为什么不直接执行“git diff --name-only HEAD@{1} HEAD”呢? (7认同)