java – jGit – 如何将所有文件添加到暂存区域

前端之家收集整理的这篇文章主要介绍了java – jGit – 如何将所有文件添加到暂存区域前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我用很多方法尝试用j Git克隆一个repo(它的工作).
然后,我在存储库中写一些存档,并尝试添加所有(一个git add *,git add -A或类似的东西)..但它不起作用.文件简单不会添加到暂存区域.

我的代码是这样的:

FileRepositoryBuilder builder = new FileRepositoryBuilder();
    Repository repository = builder.setGitDir(new File(folder))
            .readEnvironment().findGitDir().setup().build();
    CloneCommand clone = Git.cloneRepository();
    clone.setBare(false).setCloneAllBranches(true);
    clone.setDirectory(f).setURI("git@192.168.2.43:test.git");
    try {
        clone.call();
    } catch (GitAPIException e) {
        e.printStackTrace();
    }
    Files.write("testing it...",new File(folder + "/test2.txt"),Charsets.UTF_8);
    Git g = new Git(repository);
    g.add().addFilepattern("*").call();

我究竟做错了什么?
谢谢.

尝试使用addFilePattern(“.”)时出现异常:

Exception in thread "main" org.eclipse.jgit.errors.NoWorkTreeException: Bare Repository has neither a working tree,nor an index
    at org.eclipse.jgit.lib.Repository.getIndexFile(Repository.java:850)
    at org.eclipse.jgit.dircache.DirCache.lock(DirCache.java:264)
    at org.eclipse.jgit.lib.Repository.lockDirCache(Repository.java:906)
    at org.eclipse.jgit.api.AddCommand.call(AddCommand.java:138)
    at net.ciphersec.git.GitTests.main(GitTests.java:110)

解决方法

一个简单的调试方法是查看 JGit repoAddCommandTest.java中的 AddCommand的测试

您将看到,为了添加所有文件,模式“*”从不使用,而是“.”是.
它被用于名为… testAddWholeRepo()的测试函数(!)

git.add().addFilepattern(".").call();

例外:

Exception in thread "main" org.eclipse.jgit.errors.NoWorkTreeException: 
Bare Repository has neither a working tree,nor an index

相当明确:您需要在非裸机中添加文件.

请参阅test method testCloneRepository()与您自己的克隆进行比较,看看是否有差异.

猜你在找的Java相关文章