2017-06-03 42 views
2

我想從java推入一個項目到gitlab。我克隆它成功,但我不能推動更​​改(添加更多的文件或添加更多的信息到現有的文件。)。該代碼不包含任何錯誤,但不會在gitlab中更新。如何從java api推到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); 

回答

2

這是使用JGit

對於犯語法,使用,如jgit/porcelain/CommitAll.java食譜例如:

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

,這將是相當於git commit -a -m "a message"

+0

謝謝。我會嘗試這段代碼 – Ash

+0

@Ash不要忘了,爲了您的其他問題,請閱讀https://stackoverflow.com/help/accepted-answer – VonC

+0

現在,在添加該代碼行後,它在gitlab中顯示的更新數少於分鐘前。但是如何編輯一個克隆的文件,然後將它推入gitlab。因爲在我的代碼中它是克隆,並立即推送,所以我無法編輯。我的用例是我想克隆它,並做一些改變,並推回到混帳。我嘗試了一種單獨的克隆方法,但我不知道如何使用push方法調用克隆的文件夾。有什麼辦法可以解決這個問題嗎? – Ash