我使用了"git init --separate-git-dir=C:/repo/.git"
并为存储库定义了另一个位置。我的工作地点是"C:/work/"
。
git在工作位置创建一个.git-file
,链接到回购位置。
当我使用JGit时,我无法连接到我的回购:
Git
.open(new File("C:\work\.git"))
.reset()
.setMode(ResetType.HARD)
.call();
然后我得到一个例外:
Exception in thread "main" org.eclipse.jgit.errors.RepositoryNotFoundException: repository not found: C:work.git
at org.eclipse.jgit.lib.BaseRepositoryBuilder.build(BaseRepositoryBuilder.java:582)
at org.eclipse.jgit.api.Git.open(Git.java:117)
at org.eclipse.jgit.api.Git.open(Git.java:99)
at de.test.git.App.main(App.java:20)
如何连接到我的存储库?
谢谢你的帮助。
编辑:
感谢Joni为我的问题找到了解决方案。
谢谢Joni!你太棒了!我试过了,就像你写的一样设置工作树,它就像一个魅力。顺便说一下,我发现在不知道回购位置的情况下执行这些步骤的选项。对于那些被采访的人:
Repository repo = new FileRepositoryBuilder()
.findGitDir(new File("C:\work"))
.setWorkTree(new File("C:\work"))
.build();
Git git = new Git(repo);
git
.reset()
.setMode(ResetType.HARD)
.call();
git.close();
--separate-git-dir
选项。
作为变通方案,您可以直接打开关联回购:
Git
.open(new File("C:/repo/.git"))
.reset()
.setMode(ResetType.HARD)
.call();
当这样使用时,JGit将不知道您的工作目录在哪里,所以我想任何与工作目录有关的操作都会失败。根据用户指南,您可以创建一个自定义的Repository
对象,如下所示:
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repository = builder.setGitDir(new File("C:/repo/.git"))
.setWorkTree(new File("C:/work"))
.readEnvironment() // scan environment GIT_* variables
.build();
然后使用Git(Repository)
构造函数而不是Git.open
:
Git git = new Git(repository);
git.reset()
.setMode(ResetType.HARD)
.call();