我有一个功能分支,简称为feature
,它具有约100次提交,所有这些都与某种功能相关。这些提交都在一段时间内全部 merge 到master分支中。我想列出分支上的所有提交,以便可以将功能重新添加到其他项目中。
基本上,我想在下图上具有绿色圆点的提交ID。
除了使用gitk或类似工具并手动收集所有相关的提交ID之外,如何在Git中做到这一点?
最佳答案
尽管给出了答案并被接受,我还是建议采取更自动的方式(但是,如果您没有将master
merge 到feature
,它只会起作用):
考虑以下历史记录:
--A---B---C---D---E---F---G (master)
\ / /
H---J-------K (feature)
基本上,我们要执行
git log B..feature
。git log --format='%H' feature..master | tail -1 | \
xargs -I '{}' git log '{}'^..feature
git log --format='%H' feature..master | tail -1
将找到对master
的提交,该提交是在创建feature
分支后立即完成的-这是C
C
的祖先-B
也将是H
分支的第一个提交feature
的祖先。然后
xargs -I '{}' git log '{}'^..feature
(即变成git log B..feature
)仅显示可从feature
到达但不能从B
到达的提交。关于git - 列出主题分支中的所有提交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17779631/