我有一个位于main.git
的裸库,并尝试从另一个仓库test
中获取一个分支(例如foo
),该仓库刚刚执行了git init
操作:
fetchtest/
|- main.git/
|- test/
|- .git/
使用常规的git命令,我可以执行
git fetch ../main.git foo:foo
,这将在test/
中创建一个新的分支foo
并获取所需的对象。 然后,我想使用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)
我该如何让它工作?