如何在合并分支分叉的地方获得提交

时间:2015-05-31 17:17:27

标签: git branch

o---1---o---o---o---o     master
     \         /
      o---o---2           feature

是否可以在不使用reflog的情况下获得提交1? 使用git 2.4.2

我试过了:

git merge-base master feature
git merge-base feature master
returns: commit 2 
git merge-base --fork-point master feature
git merge-base --fork-point feature master
returns nothing ( exit code 1 )

不重复:

3 个答案:

答案 0 :(得分:6)

从这个问题中找到我的答案: (backporting实际上也是我的用法!) https://stackoverflow.com/a/16718891/867294

var tt = $(window).width();
$(".item-slider").css("width", tt+"px");

我有些困惑,这不是git默认的一部分。您至少会期望这是[alias] oldest-ancestor = !bash -c 'diff -u <(git rev-list --first-parent "${1:-master}") <(git rev-list --first-parent "${2:-HEAD}") | sed -ne \"s/^ //p\" | head -1' - 的{​​{1}}选项的行为。如果有人知道更好/默认的替代品。请将其放在评论中或作为单独的答案!

答案 1 :(得分:2)

正如您所注意到的,git merge-base对您没有帮助。原因是featuremaster历史记录的一部分,可以快速转发到master

如果这是您的特定设置,您已将feature合并到master,并且feature分支仍然指向合并前的提交,那么您可以获得所有master中包含feature未包含的提交,并采用最后一个提交;你正在寻找的合并基础是它的父母。您可以通过指定范围feature..master

来实现
git show $(git rev-list feature..master | tail -1)~1

这将在图表中显示合并基础提交“1”。

答案 2 :(得分:0)

我认为以下内容可满足您的需求:

git merge-base --fork-point master