我有一个裸仓库位于main.git
并试图foo
在另一个仓库中获取一个分支(比方说),该仓库test
刚刚被git init
'd:
fetchtest/
|- main.git/
|- test/
|- .git/
使用常规 git 命令,我可以执行 a git fetch ../main.git foo:foo
,这将创建一个新分支foo
并test/
获取分支所需的对象。然后我想做同样的事情,但以编程方式使用 JGit,即不使用 git CLI,而只使用 Java 代码。我无法使用 git CLI:
Git git = Git.init().setDirectory(new File("fetchtest/test/")).call();
git.fetch().setRemote(new File("../main.git"))
.setRefSpecs(new RefSpec("foo:foo"))
.call();
但它只是错误:
org.eclipse.jgit.api.errors.TransportException: Remote does not have foo available for fetch.
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:137)
// ......
Caused by: org.eclipse.jgit.errors.TransportException: Remote does not have foo available for fetch.
at org.eclipse.jgit.transport.FetchProcess.expandSingle(FetchProcess.java:349)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:139)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:113)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1069)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:128)
我怎样才能让它工作?