【问题标题】:Git getting all commits of a previously merged branchGit获取先前合并分支的所有提交
【发布时间】:2016-03-01 10:40:39
【问题描述】:

我的项目中有一个分支,它不断被合并回 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 进行比较也无济于事。

有没有办法做到这一点?无需知道之前分支合并到 master 的提交的 Hash?

谢谢!

编辑:修复树结构

【问题讨论】:

    标签: git merge git-branch git-commit


    【解决方案1】:

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

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

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

    【讨论】:

    • 我明白了,遗憾的是我在 Eclipse 中使用了 Egit,我想将来我需要通过 CLI 来执行此操作。非常感谢!
    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 2011-02-18
    • 2012-07-03
    • 1970-01-01
    • 2014-02-22
    • 2020-05-04
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多