Git 查看指定 commit 何时 merge 进指定分支

发布于 2022-02-15 22:21:52 字数 1842 浏览 1459 评论 0

在协同开发中,我们时常会去查看某一次 commit 何时 merge 进主干分支,从而评估影响时间。

说人话就是该如何解答老板的问题:

我们这个功能/bug从哪个版本开始有的?


操作背景

实际操作过程是这样的:

  1. 首先找到目标代码的改动 commit。可以通过 git blame 查看指定代码的最后一次改动记录,或 git log 查看指定文件的改动历史。
  2. 找到了目标 commit,如何查看它何时被 merge 进主干分支进而发布上线的呢?

想了下,git 貌似没有直接相关的指令,后来在栈溢出找到了解决方案。

解决方案

在 git 配置文件 ~/.gitconfig 中追加以下别名:

[alias]
    find-merge = "!sh -c 'commit=$0 && branch=${1:-HEAD} && (git rev-list $commit..$branch --ancestry-path | cat -n; git rev-list $commit..$branch --first-parent | cat -n) | sort -k2 -s | uniq -f1 -d | sort -n | tail -1 | cut -f2'"
    show-merge = "!sh -c 'merge=$(git find-merge $0 $1) && [ -n \"$merge\" ] && git show $merge'"

之后就可以下面这样使用了:

# current branch
git find-merge <SHA-1>
# specify master
git find-merge <SHA-1> master

git show-merge 类似 git find-merge,可以查看这次合并的信息和其它细节。

实践一下

on master ◦ git find-merge 0c205019ac75f1fc09a7fdd6079461328abc3137                       23:02:37

6cbd92e271de540e98f4157132ba47973e3cb07b

on master ◦ git show-merge 0c205019ac75f1fc09a7fdd6079461328abc3137                       23:06:06

commit 6cbd92e271de540e98f4157132ba47973e3cb07b
Merge: 9ab0014 e22126f
Author: 亮 <liang.huang>
Date:   Fri Apr 28 21:04:33 2017 +0800

    Merge branch '20170413-v4.5.0-share' into '20170428-v5.1.0'
    
    分享页面、首页弹屏、banner修改、push和消息页面跳转
    
    See merge request !125

果然好用,很好很强大!


参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

文章
评论
84963 人气
更多

推荐作者

夢野间

文章 0 评论 0

doggiejohn

文章 0 评论 0

就此别过

文章 0 评论 0

初见终念

文章 0 评论 0

qq_rvKjBH

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文