有没有办法让合并后挂钩获取合并更改的所有文件的列表,即使它是快进的?
问问题
4137 次
2 回答
13
列出已更改文件的正确 Git 命令是diff-tree
也可以使用ORIG_HEAD
和HEAD
快捷方式:
git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD
(另请参阅:列出 Git 中提交的所有文件)
[更新]
HEAD@{1}
用. 代替可能会更好ORIG_HEAD
。IE:
git diff-tree -r --name-only --no-commit-id HEAD@{1} HEAD
在git pull --ff-only
命令的情况下,当可以添加许多提交时,HEAD@{1}
(在 post-merge 挂钩内)给出该命令之前的最后一次提交,而ORIG_HEAD
只给出HEAD^
提交(至少在 Git 2.1.4 中)。
于 2013-09-23T11:15:16.457 回答
3
我认为那时你最好的选择是 reflogs。如果您只是快进,HEAD 的 reflog 的第一行将如下所示:
63e21fb HEAD@{0}: merge origin/master: Fast-forward
所以你应该能够只打印第一行 ( git reflog -n 1
),检查它是否匹配merge .*: Fast-forward$
,如果是,就执行git diff HEAD@{1} HEAD
。(您确实希望查看 reflog 以验证是否存在快进合并,除非您可以从脚本中确信这是现在唯一的可能性。)
于 2011-02-02T18:31:28.727 回答