我们的git代码库中有一个文件,我想找出是谁将其合并到一个分支中。
我有一个标识了引入该文件的提交的哈希值(假设为552a976f1a25f9bad57efb9455e951f6b7b3367f
),并且我知道该文件位于staging
分支上。
如何找到将上述提交合并到staging
分支的提交哈希值?我想找到合并人员和合并日期。
我们的git代码库中有一个文件,我想找出是谁将其合并到一个分支中。
我有一个标识了引入该文件的提交的哈希值(假设为552a976f1a25f9bad57efb9455e951f6b7b3367f
),并且我知道该文件位于staging
分支上。
如何找到将上述提交合并到staging
分支的提交哈希值?我想找到合并人员和合并日期。
git log <commit-id>..<branch> --ancestry-path --merges --reverse
以下是您感兴趣的<commit-id>
后发生的合并列表和<branch>
的当前状态。根据您的合并工作流程,您感兴趣的合并可能是列表中的第一个或下一个之一。
使用可视化工具可以更好地展示相关历史记录的部分内容。
git log --oneline --graph --decorate --ancestry-path --boundary <commit-id>..<branch>
<commit-id>
(它将属于“图形边界” - 标有o
而不是*
)。git rev-list --merges HEAD --not <hash> --reverse
这将为您提供在您的哈希提交之后发生的合并提交列表。在此命令中,我使用HEAD
,因为我相信您正在master
(示例中)或staging
(您的情况下)上。
在不太复杂的环境中,您可能正在寻找在您提交之后发生的第一个合并提交... 但如果您没有这种机会,您可以尝试:
git log --graph --decorate HEAD...<hash>^
gitk
)...git log -1 --merges <hash>
将显示自<hash>
提交以来(包括本身)最近的合并提交日志。
git log <hash>
会显示在<hash>之前的提交,而不是之后(即它将显示<hash>的祖先)。因此,此命令将显示您的提交之前的最后一次合并,而不是将其带入主分支的合并。 - Jan Warchoł在您的目标
分支中,如果所有合并提交都有来自目标
分支的提交作为第一个父提交,则可以使用git-when-merged。这将在使用“标准”Git工作流程(例如使用CI进行合并)时发生。
用法:
git-when-merged <commit> <target branch>
git log path/to/the/file
(或gitk
)吗? - svick