Git 获取先前合并分支的所有提交

Git getting all commits of a previously merged branch

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

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

插图:

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

我想列出B、C、G、H。但是我所有的尝试都return只有G、H

我试过:

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

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

有办法吗?无需知道分支先前合并到 master 的提交哈希?

谢谢!

编辑:修复了树结构

您可能在 F 上重置了 MyBranch 或从 master 到 MyBranch 进行了快进合并,以使您的 MyBranch 引用指向您开始处理 G 的位置。现在不再有任何引用表明 C属于一个特定的分支,它现在只是 master 和 MyBranch 的共同历史的一部分。如果您在最初的 MyBranch 到 master 合并之后完成了从 master 到 MyBranch 的 --no-ff 合并,您将拥有 MyBranch 到 git log --first-parent --no-merges 的连续历史记录。提交对分支一无所知,它们只指向它们的祖先。分支只是指向特定提交的引用。

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

由于 D、E 和 F 现在对于 master 和 MyBranch 是通用的,因此 D 之前特定分支之间的区别将丢失。