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

问题描述 投票:5回答:2

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

git githooks
2个回答
3
投票

我认为那时候您最好的选择是重新引用。如果您只是快进,HEAD的reflog的第一行将如下所示:

63e21fb HEAD@{0}: merge origin/master: Fast-forward

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


8
投票

也可以使用ORIG_HEADHEAD shortcuts

git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD

(另见:List all the files for a commit in Git

[upd]

也许最好用HEAD@{1}代替ORIG_HEAD

[如果使用git pull --ff-only命令,则可以添加许多提交时,HEAD@{1}(内部合并后钩子)将给出此命令之前的最后一次提交,而ORIG_HEAD仅给出HEAD^提交(至少在Git中2.1.4)。

© www.soinside.com 2019 - 2024. All rights reserved.