【问题标题】:Detect merged branches from Git merge commit从 Git 合并提交中检测合并的分支
【发布时间】:2018-05-10 17:06:12
【问题描述】:

我想知道合并提交中的合并分支。

因此,我决定在合并发生时使用提交挂钩自动编写包含合并分支的合并消息。

但是,这有一个问题。当我只看到一个提交对象时,我无法知道合并了哪些分支。

有没有什么好方法可以在看到提交对象的同时知道合并了哪些分支?

【问题讨论】:

  • 请记住,分支实际上只是对特定提交的引用。所以你可以问诸如“这个合并提交和这个分支是否共享一个共同的祖先?”之类的问题,但是“哪些分支被合并了?”从 Git 的角度来看,不一定有意义。
  • 我不确定您要获取什么(对象或分支名称?)。您可以识别提交(合并)的类型并确定共同祖先。现在git show <object> 显示Merge: commit commit,它们是合并的两个分支的尖端。我不知道如何以更好的方式获得它(还)。从那里您可以使用git merge-base <commit> <commit> 来获取共同祖先,即创建分支的对象。

标签: git merge githooks git-commit


【解决方案1】:

您可以使用以下命令获取合并提交的父提交:

git rev-list --parents -n 1 <commit>

如我之前的评论中所述,您无法获取分支名称,只能获取提交。然后从这两个提交中,你可以得到分叉点:

git merge-base <commit> <commit>

奖励:提交的顺序很重要。左提交是您执行合并的分支,右提交是您合并的分支。例如,如果您在 master 分支中并执行 git merge --no-ff develop,则左侧的提交将是 master,而右侧的 commit 将是 development。

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2012-03-02
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2013-02-07
    • 2019-07-14
    相关资源
    最近更新 更多