【问题标题】:How to determine with JGit which branches have been merged to master?如何用 JGit 确定哪些分支已合并到 master?
【发布时间】:2014-12-26 00:24:55
【问题描述】:

如何使用JGit判断哪些分支已经合并到master?

我想做与普通git命令等效的操作:

git branch -a --merged

这在 JGit 中可行吗?

【问题讨论】:

    标签: jgit


    【解决方案1】:

    RevWalk::isMergedInto() 可用于确定一个提交是否被合并到另一个。也就是说,如果第一个参数中给出的提交是第二个给定提交的祖先,isMergedInto 返回 true。

    try (RevWalk revWalk = new RevWalk(repository)) {
      RevCommit masterHead = revWalk.parseCommit(repository.resolve("refs/heads/master");
      RevCommit otherHead = revWalk.parseCommit( repository.resolve("refs/heads/other-branch");
      if (revWalk.isMergedInto(otherHead, masterHead)) {
        ...
      }
    }
    

    要获取所有分支的列表,请使用ListBranchesCommand

    List<Ref> branches = Git.wrap(repository).listBranches().setListMode(ListMode.ALL).call();
    

    【讨论】:

    • 是的,使用LsRemoteCommand,您可以检索远程存储库上可用的所有引用。
    • 但是如何从 LsRemoteCommand 获取存储库? .getRepository 返回 null
    • 您的评论似乎与此问题无关。如果您对LsRemoteCommand 有任何疑问,请在单独的帖子中提问。
    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 2018-04-14
    • 2020-05-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多