首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >查找包含特定提交的合并提交

查找包含特定提交的合并提交
EN

Stack Overflow用户
提问于 2011-12-12 14:00:45
回答 12查看 65.2K关注 0票数 216

想象一下下面的历史:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       c---e---g--- feature
      /         \
-a---b---d---f---h--- master

我怎样才能发现提交"c“已经合并到master (即,找到合并提交"h")?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-12-13 16:36:02

您的示例显示分支feature仍然可用。

在这种情况下,h是最后的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git log master ^feature --ancestry-path

如果分支feature不再可用,您可以在cmaster之间的历史记录行中显示合并提交

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git log <SHA-1_for_c>..master --ancestry-path --merges

然而,这也将显示在h之后发生的所有合并,以及efeature上的g之间的合并。

比较以下命令的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git rev-list <SHA-1_for_c>..master --ancestry-path

git rev-list <SHA-1_for_c>..master --first-parent

将给出h的SHA-1作为公共的最后一行。

如果您有可用的comm -1 -2,您可以使用它来处理这些结果。如果您使用的是msysgit,则可以使用以下perl代码进行比较:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/'  file1 file2

(来自http://www.cyberciti.biz/faq/command-to-display-lines-common-in-files/的perl代码,摘自“comp.unix.shell新闻组的某个人”)。

如果您想让它成为一行程序,请参阅process substitution

票数 175
EN

Stack Overflow用户

发布于 2015-06-23 08:48:57

将此代码添加到您的~/.gitconfig

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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'"

然后您可以像这样使用别名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# current branch
git find-merge <SHA-1>
# specify master
git find-merge <SHA-1> master

要查看合并提交的消息和其他详细信息,请使用带有相同参数的git show-merge

(基于Gauthier's answer。感谢Rosen Matevjavabrett纠正了sort的一个问题。)

票数 179
EN

Stack Overflow用户

发布于 2013-03-03 00:12:10

git-get-merge将定位并显示您正在查找的合并提交:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install git-get-merge
git get-merge <SHA-1>

该命令跟随给定commit的子级,直到找到与另一个分支(假设是主分支)的合并。

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8475448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文