如何在合并分支分叉的地方提交
How to get commit where merged branch forked from
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 )
不重复:
- How to get a branch into a forked repo from the original repo in github
- git how to find commit hash where branch originated from
- How to get information where branch starts?
从这个问题中找到我的答案作为子集:
(反向移植实际上也是我的用例!)
[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' -
我有点困惑,这不是 git 默认的一部分。您至少会期望这将是 merge-base
的 --fork-point
选项的行为。如果有人知道 better/default 替代方案。请将其放在评论中或作为单独的答案!
如您所见,git merge-base
不会帮助您。这样做的原因是 feature
是 master
历史的一部分,它可以被快速转发到 master
。
如果这是你的特定设置,你已经将 feature
合并到 master
,并且 feature
分支仍然指向合并前的提交,那么你可以获取 master
中包含的所有提交,但 feature
中 未包含 的所有提交,并获取最后一个;您正在寻找的合并基础是它的父级。您可以通过指定范围 feature..master
:
来做到这一点
git show $(git rev-list feature..master | tail -1)~1
这将在您的图表中显示合并基础提交“1”。
我认为以下内容符合您的要求:
git merge-base --fork-point master
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 )
不重复:
- How to get a branch into a forked repo from the original repo in github
- git how to find commit hash where branch originated from
- How to get information where branch starts?
从这个问题中找到我的答案作为子集: (反向移植实际上也是我的用例!)
[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' -
我有点困惑,这不是 git 默认的一部分。您至少会期望这将是 merge-base
的 --fork-point
选项的行为。如果有人知道 better/default 替代方案。请将其放在评论中或作为单独的答案!
如您所见,git merge-base
不会帮助您。这样做的原因是 feature
是 master
历史的一部分,它可以被快速转发到 master
。
如果这是你的特定设置,你已经将 feature
合并到 master
,并且 feature
分支仍然指向合并前的提交,那么你可以获取 master
中包含的所有提交,但 feature
中 未包含 的所有提交,并获取最后一个;您正在寻找的合并基础是它的父级。您可以通过指定范围 feature..master
:
git show $(git rev-list feature..master | tail -1)~1
这将在您的图表中显示合并基础提交“1”。
我认为以下内容符合您的要求:
git merge-base --fork-point master