Git获得之前合并分支的所有提交

时间:2015-11-27 09:09:19

标签: git merge git-branch git-commit

我的项目中有一个分支,不断被合并回master,并且在以后需要再次开发相应部分时重新分支。

我想要做的是记录该分支中的所有提交(从它的初始开始)。可悲的是,我的尝试只能在分支重新开放(尚未关闭)后的最后一次提交

说明:

Master:   A ------- D---> E ---> F ------- I
           \       /              \       
MyBranch:   B --> C                G --> H

我想列出B,C,G,H。但我的所有尝试都只返回G,H

我试过了:

1. git rev-list ^master MyBranch
2. git log --no-merges master..

与origin / MyBranch比较也无济于事。

有办法做到这一点吗?无需知道分支先前合并为主的提交的哈希?

谢谢!

编辑:修复了树形结构

1 个答案:

答案 0 :(得分:1)

你可能在F上重置你的MyBranch或者从master到MyBranch进行快速合并以获得你的MyBranch引用,指向你开始使用G的地方。现在不再有任何引用表明C属于一个特定的分支,它现在只是master和MyBranch的共同历史的一部分。如果您在初始MyBranch之后完成了从主人到MyBranch的--no-ff合并,那么您将通过git log --first-parent --no-merges获得MyBranch的连续历史记录。承诺对分支机构一无所知,只指向他们的祖先。分支只是指向特定提交的引用。

从旧分支行获取提交的唯一方法是解析提交消息并查找"合并分支..." if 包含在合并提交消息中,然后从那里回溯。

由于D,E和F现在对于master和MyBranch是常见的,因此在D丢失之前区分特定分支。