我想遍历我的git仓库,但只有HEAD提交,包括远程分支。
我只有本地master分支和很多远程分支。
我可以遍历我的实际工作目录。

    Ref head = repository.getRef("HEAD");
    RevWalk walk = new RevWalk(repository);

    RevCommit commit = walk.parseCommit(head.getObjectId());
    RevTree tree = commit.getTree();

    TreeWalk treeWalk = new TreeWalk(repository);
    treeWalk.addTree(tree);
    treeWalk.setRecursive(true);
    while (treeWalk.next()) {
        System.out(treeWalk.getPathString())
    }
    repository.close();


但是此代码仅遍历实际的工作目录。
之后,我想在头提交中读取文件。
我如何执行阅读和遍历分支?

最佳答案

使用RefDatabase#getRefs浏览现有的引用:

RefDatabase refDatabase = repository.getRefDatabase();
Map<String, Ref> refs = refDatabase.getRefs(Constants.R_REMOTES);
for (Ref remoteRef : refs) {
    // ...
}


getRefs的参数是仅获取某些引用的前缀,您也可以使用RefDatabase.ALL来获取所有引用。

要读取文件内容,请按照问题代码中的步骤在树上行走。然后,使用TreeWalk对象,可以读取内容。请参阅this answer问题中的How to “cat” a file in JGit?

09-26 06:26