我有一個簡明命名爲feature
的功能分支,它具有大約100次提交,所有提交都與某種功能相關。隨着時間的推移,這些提交全部合併到主分支中。我想列出分支上的所有提交,以便我可以將該功能重新添加到其他項目。列出主題分支中的所有提交
基本上我想在下面的圖表上提交綠點的ID。
我怎樣才能做到這在Git中,然後通過將gitk或類似工具和手工收集所有相關資料提交其他?
我有一個簡明命名爲feature
的功能分支,它具有大約100次提交,所有提交都與某種功能相關。隨着時間的推移,這些提交全部合併到主分支中。我想列出分支上的所有提交,以便我可以將該功能重新添加到其他項目。列出主題分支中的所有提交
基本上我想在下面的圖表上提交綠點的ID。
我怎樣才能做到這在Git中,然後通過將gitk或類似工具和手工收集所有相關資料提交其他?
儘管答案,並給出接受我建議這樣做更自動的方式(但它只會工作如果你沒有合併的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
會發現提交給做創建feature
支右後master
- 這是C
和C
祖先 - B
也將是祖先第一次提交H
的feature
科。
然後xargs -I '{}' git log '{}'^..feature
(即轉爲git log B..feature
)只顯示可從feature
到達的提交,但無法從B
到達。
如果你得到的具體分支的起點,例如,SHA1
,試試這個:
git log --pretty=oneline SHA1^..feature
我有一個有點凌亂的'功能'分支開始需要手工選擇開始提交,否則你的配方工作得很好。這裏是一行:'git log $(git rev-list feature..master | tail -1)^ .. feature' – sanmai
請參閱[使用Git查找分支點](http://stackoverflow.com/q/ 1527234)瞭解如何查找分支起點的詳細信息 – CharlesB