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

san*_*mai 8 git

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

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

相关承诺

我怎么能在Git中做到这一点,然后转到gitk或类似的工具并手工收集所有相关的提交ID?

yuw*_*ang 6

如果你得到特定分支的起点,例如SHA1,试试这个:

git log --pretty=oneline SHA1^..feature
Run Code Online (Sandbox Code Playgroud)


Max*_*hev 3

尽管给出并接受了答案,我还是会建议更自动的方法来执行此操作(但只有在您没有合并master到时它才会起作用feature):

考虑到以下历史:

--A---B---C---D---E---F---G (master)
       \     /       /
        H---J-------K       (feature)
Run Code Online (Sandbox Code Playgroud)

基本上我们想要表演git log B..feature

git log --format='%H' feature..master | tail -1 | \
xargs -I '{}' git log '{}'^..feature
Run Code Online (Sandbox Code Playgroud)

git log --format='%H' feature..master | tail -1master将找到对创建分支后立即完成的提交feature- 这是C

C-的祖先也将是分支第一次提交的B祖先。Hfeature

然后xargs -I '{}' git log '{}'^..feature(即转向)仅显示可从 访问但不可从 访问的git log B..feature提交。featureB

  • 我的“feature”分支的开头有点混乱,需要手动选择开始提交,但除此之外你的食谱工作得很好。这是一句:`git log $(git rev-list feature..master | tail -1)^..feature` (2认同)
  • 有关如何查找分支起点的详细信息,请参见[使用Git查找分支点?](http://stackoverflow.com/q/1527234) (2认同)