确定分支是远程的还是本地的(使用JGit)?
有没有办法使用JGit确定一个分支是远程分支还是本地分支(或两者都是)?我有:确定分支是远程的还是本地的(使用JGit)?,git,jgit,Git,Jgit,有没有办法使用JGit确定一个分支是远程分支还是本地分支(或两者都是)?我有: Map<String, Ref> allRefs = git.getRepository().getAllRefs(); Collection<Ref> values = allRefs.values(); for (Ref ref : values) { refs.add(ref.getName()); } 因此,newFeatureBranch既是本地分支,也是远程分支。目前我检查r
Map<String, Ref> allRefs = git.getRepository().getAllRefs();
Collection<Ref> values = allRefs.values();
for (Ref ref : values) {
refs.add(ref.getName());
}
因此,newFeatureBranch既是本地分支,也是远程分支。目前我检查ref.getName()是否包含“remotes/origin”。但是有没有更好的方法来确定分支是远程的还是本地的呢?在git中,所有分支都是本地的。它们都位于
.git/refs
中的本地存储库中,并且都只是指向本地提交的指针
所谓的“远程分支”只是由git fetch创建的本地分支
如何调用这些“远程分支”由git config remote.origin.fetch
决定,它通常会简单地告诉git fetch
创建一个名为refs/remotes/origin/*
的ref
因此,检查ref名称的前缀是正确的方法。一个选项是列出所有远程分支,并检查您感兴趣的分支是否在此列表中:
List<Ref> remoteBranches = git.branchList().setListMode(ListMode.REMOTE).call()
详见。术语“本地分支机构”通常指REF/HEAD中的REF。术语“远程分支”通常指REF/remotes中的REF 要仅列出您使用的本地分支,请执行以下操作:
git branch
或git.branchList().call()
要仅列出您使用的远程分支,请执行以下操作:
git branch-r
或git.branchList().setListMode(ListMode.REMOTE).call()
要同时列出本地和远程分支,请使用:
git branch-a
或git.branchList().setListMode(ListMode.All).call()
中相应的代码如下所示:
if(listMode==null){
refList=repo.getRefDatabase().getRefs(Constants.R_头);
}else if(listMode==listMode.REMOTE){
refList=repo.getRefDatabase().getRefs(Constants.R\u REMOTES);
}否则{
refList=newhashmap(repo.getRefDatabase().getRefs(
常数(R_头);
refList.putAll(repo.getRefDatabase().getRefs(
常数(R_REMOTES));
}
可以,但据我所知,“哈邦”的建议也是正确的。我无法找到一种相应的方法来仅迭代Map refList=git.getRepository().getRefDatabase().getRefs(Constants.R\u REMOTES)的本地分支;ListBranchCommand setListMode=git.branchList().setListMode(ListBranchCommand.ListMode.REMOTE);
List<Ref> remoteBranches = git.branchList().setListMode(ListMode.REMOTE).call()
Map<String, Ref> refList = repo.getRefDatabase().getRefs(Constants.R_REMOTES);
if (listMode == null) {
refList = repo.getRefDatabase().getRefs(Constants.R_HEADS);
} else if (listMode == ListMode.REMOTE) {
refList = repo.getRefDatabase().getRefs(Constants.R_REMOTES);
} else {
refList = new HashMap<String,Ref>(repo.getRefDatabase().getRefs(
Constants.R_HEADS));
refList.putAll(repo.getRefDatabase().getRefs(
Constants.R_REMOTES));
}