【问题标题】:How to Push to gitlab from java api如何从 java api 推送到 gitlab
【发布时间】:2017-06-03 03:24:30
【问题描述】:

我正在尝试将项目从 java 推送到 gitlab。我成功克隆了它,但我无法推送更改(添加更多文件或向现有文件添加更多信息。)。代码不包含任何错误但在 gitlab 中没有更新。

这是我的代码

File localPath = File.createTempFile("TestGitRepository", "");
    if(!localPath.delete()) {
        throw new IOException("Could not delete temporary file " + 
localPath);
    }

    Git git = Git.cloneRepository()
            .setURI( REMOTE_URL ) 
            .setDirectory(localPath) 
            .setCredentialsProvider( cp )
            .call();
    System.out.println("Cloning from " + REMOTE_URL + " to " + localPath); 


            // Git git=Git.open(dir);
             File file = new File( git.getRepository().getWorkTree(), "file" + new Object().hashCode() ); 
             System.out.println("hi");
             file.createNewFile(); 

             git.add().addFilepattern( file.getName() ).call();

             git.commit().setMessage( "Add file " + file.getName() ).call();

             git.push() .setCredentialsProvider( cp ) .call();

             System.out.println("Pushed from repository: " + localPath + " to remote repository at " + REMOTE_URL);

【问题讨论】:

    标签: gitlab jgit java


    【解决方案1】:

    这是使用 JGit

    对于提交语法,使用 jgit/porcelain/CommitAll.java 食谱示例:

    git.commit().setAll(true).setMessage("a message").call();
    

    这相当于git commit -a -m "a message"

    【讨论】:

    • @Ash 不要忘记,对于您的其他问题,请阅读stackoverflow.com/help/accepted-answer
    • 现在添加那行代码后,它在 gitlab 中显示,不到一分钟前更新。但是如何编辑克隆的文件,然后将其推送到 gitlab 中。因为在我的代码中它正在克隆并且立即推送,所以我无法编辑。我的用例是我想克隆它并进行一些更改并推回 git。我尝试了一个单独的克隆方法,但我不知道如何在推送方法中调用克隆的文件夹。有什么办法可以解决这个问题?
    • @Ash 一种方法是等待用户按键(stackoverflow.com/a/15440036/6309stackoverflow.com/a/26184535/6309),让您有时间进行编辑。另一种方法是生成 2 个可执行文件:一个用于克隆,一个用于添加/推送。只有当你准备好时,你才会调用第二个可执行文件。
    • @Ash 最好问一个新问题,里面有错误信息的详细信息(以及你的 JGit 的确切版本号)
    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 2014-12-08
    • 2019-06-03
    • 2021-11-02
    • 2019-01-13
    • 2015-12-25
    • 2018-12-30
    • 2018-03-10
    相关资源
    最近更新 更多