我有一个简要命名为feature
的功能分支,它有大约100个提交,都与各种功能相关。这些提交都是随着时间的推移而合并到主分支中的。我想列出分支上的所有提交,以便我可以将该功能重新添加到其他项目中。
基本上我想在下图中为绿点提供提交ID。
如何在Git中执行此操作,然后转到gitk或类似工具并手动收集所有相关的提交ID?
答案 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
访问的提交。