列出主题分支中的所有提交

时间:2013-07-22 03:47:12

标签: git

我有一个简要命名为feature的功能分支,它有大约100个提交,都与各种功能相关。这些提交都是随着时间的推移而合并到主分支中的。我想列出分支上的所有提交,以便我可以将该功能重新添加到其他项目中。

基本上我想在下图中为绿点提供提交ID。

relevant commits

如何在Git中执行此操作,然后转到gitk或类似工具并手动收集所有相关的提交ID?

2 个答案:

答案 0 :(得分:6)

如果您获得特定分支的起点,例如SHA1,请尝试以下操作:

git log --pretty=oneline SHA1^..feature

答案 1 :(得分:3)

尽管给出并接受了答案,我建议采用更自动的方法(但只有在你没有将master合并到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访问的提交。