如何使用 JGit 找到分支的第一次提交?

2024-02-24

我想使用 Eclipse 的 JGit 库找到特定分支的第一个提交。例如,如果我有

master -- a -- c -- d -- e
          \
  feature  b -- f -- g -- h
            \
    another  j -- k -- l

// findBranchRoot() is the magic method we want to create
repository.resolve("feature").findBranchRoot().getId(); // this would return b
repository.resolve("another").findBranchRoot().getId(); // this would return j

有谁知道这是怎么做到的吗?


你将遇到的问题是——请耐心听我说——提交不是“在”分支上的。要了解这一点,请考虑您绘制的图表。这是模棱两可的。难免如此。你画了

A---C---D---E          master
 \
  B---F---G---H        feature
   \
    J---k---L          another

并且根本没有办法确定是否B被“上”feature or another(或者,就此而言,这三个中的哪一个A被设置为“on”)。

A---C---D---E          master
 \
  B---J---K---L        another
   \
    F---G---H          feature

shows exactly相同的历史。这完全取决于您选择如何解释它。

如果你想将提交绑定到某些外部管理记录,请在提交消息中放置一个标记,这样就可以了,但在 Git 本身(以及实际工作)中,重要的是历史结构,而不是它的具体内容。在此存储库或该存储库中引用。

如果到了发布的时间feature or another,你需要推送提交B不管怎样,除非它已经作为其他工作的一部分被推动。血统很重要。分支名称则不然。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JGit 找到分支的第一次提交? 的相关文章

随机推荐