我遇到了一个棘手的问题。 例如,我正在研究" 功能"分支,经过多次提交和合并后,代码传递给" 主",图表如下:
---A---B---C---D---I master
\ \ / /
E---F---G---H feature
我想知道的是"功能"分支。
我找到了这个命令:git log --name-only --pretty=format:'' origin_branch..new_branch
它似乎可以给我结果,但关键是我必须指定一个合适的范围。
但是在我学习手册之后,我不知道如何给出正确的范围。
我想得到的是:
E--- ---G---H feature
根据gitrevisions(git help gitrevisions):
master..feature =>无
master ... feature =>
---.---.---C---D---I master
\ \ / /
.---.---.---. feature
功能^ @ =>
---A---B---.---.---.
\ \ / /
E---F---G---. feature
你可以看到没有一个符合我的要求。
真的,谢谢你,如果你可以帮助我。
答案 0 :(得分:1)
在我看来,最简单的方法是找到feature
偏离master的提交(在你的情况下A
)。在此之后,您可以告诉git向您显示feature
上的所有提交,不包括合并以及"原始"之后的任何提交。提交。
要查找源自我们的提交feature
,我们可以使用此命令链;可能有一种更简单的方法,但我不知道一个:
git rev-list master --first-parent | grep "$(git rev-list feature --first-parent)" | head -1
这个效果实际上列出了所有#34;仅#34;仅在{em>第一个父之后(忽略合并的提交)并将它们与master
上的提交进行比较,在feature
上。我们使用在两者上发生的第一次提交,即提交feature
的提交。
然后我们使用此提交列出feature
上的所有提交,忽略合并提交以及"始发"之后的任何提交。提交。
git log feature --name-only --no-merges --first-parent --not $(git rev-list master --first-parent | grep "$(git rev-list feature --first-parent)" | head -1)
如果您想更频繁地使用此命令,我建议您创建一个别名。