获取与合并相关的所有提交的有效方法?
Efficient way to get all commits relevant to a merge?
假设我在下面的分支 A
、B
和 C
之间进行了复杂的章鱼合并:
---1---o---A
\ /
X
/ \
---2---o---o---B
\
o---C
这与 http://git-scm.com/docs/git-merge-base#_discussion
中描述的相似
我可以使用 git merge-base --all --octopus A B C
从 git 轻松获得 1
和 2
我真正需要的是图中所示的所有提交。
我可以通过以下方式手动完成此操作:
git log --pretty=format:%H A...1
git log --pretty=format:%H A...2
git log --pretty=format:%H B...1
git log --pretty=format:%H B...2
git log --pretty=format:%H C...1
git log --pretty=format:%H C...2
然后采用提交的集合并集,但这非常低效。
是否有更有效的方法来生成此列表?
--ancestry-path
正是为了做到这一点而构建的:
git log --pretty=%H --ancestry-path A B C --not $(git merge-base --all --octopus A B C)
git merge-base --all --octopus A B C
(我希望日志有一个 --inclusive
选项,让它包含所有明确标记的底部提交,在那之前必须使用单独的命令列出它们。)
假设我在下面的分支 A
、B
和 C
之间进行了复杂的章鱼合并:
---1---o---A
\ /
X
/ \
---2---o---o---B
\
o---C
这与 http://git-scm.com/docs/git-merge-base#_discussion
中描述的相似我可以使用 git merge-base --all --octopus A B C
1
和 2
我真正需要的是图中所示的所有提交。
我可以通过以下方式手动完成此操作:
git log --pretty=format:%H A...1
git log --pretty=format:%H A...2
git log --pretty=format:%H B...1
git log --pretty=format:%H B...2
git log --pretty=format:%H C...1
git log --pretty=format:%H C...2
然后采用提交的集合并集,但这非常低效。
是否有更有效的方法来生成此列表?
--ancestry-path
正是为了做到这一点而构建的:
git log --pretty=%H --ancestry-path A B C --not $(git merge-base --all --octopus A B C)
git merge-base --all --octopus A B C
(我希望日志有一个 --inclusive
选项,让它包含所有明确标记的底部提交,在那之前必须使用单独的命令列出它们。)