5

次のコードを使用して、github からリポジトリをチェックアウトしています。

private String url = "https://github.com/organization/project.git";
    Git repo = Git.cloneRepository().setURI(url).setDirectory(directory).setCloneAllBranches(true).call();
    for (Ref b : repo.branchList().call()) {
        System.out.println("(standard): cloned branch " + b.getName());
    }

私はコードを使用しています

Git git = Git.open(checkout); //checkout is the folder with .git
git.pull().call(); //succeeds

ブランチをチェックアウトした場合

Git git = Git.open(new File(checkout)); //checkout is the folder with .git
System.out.println(git.getRepository().getFullBranch());
CheckoutCommand checkout = git.checkout();
Ref call = checkout.setName("kalees").call();

org.eclipse.jgit.api.errors.RefNotFoundException をスローします: Ref kalees を解決できません。

「kalees」の代わりに「master」を指定すると、問題なく動作します。特定のブランチをチェックアウトするには、どのような変更を行う必要がありますか?

コードを使用する場合

git.checkout().setCreateBranch(true).setName("refs/remotes/origin/kalees");

kaleesブランチをチェックアウトします。しかし、プル操作を行うと

git.pull().call(); 

org.eclipse.jgit.api.errors.DetachedHeadException: HEAD is detachedをスローします。これがチェックアウトの問題であるか、プルの問題であるかに関係なく、何が考えられますか?

4

3 に答える 3