2016-06-25 56 views
0

我正在嘗試從origin/mybranch轉化mybranch。我使用此代碼:JGit rebase保留本地文件並獲取衝突文件列表

git.pull().setRebase(true).setRemoteBranchName(branch).call(); 

這樣做了以後,衝突的文件是基於分支的意見得到更新像

< < < < < < <上游,

但沒有衝突的本地更改即使已提交,也會被存儲庫內容覆蓋瞭解我的本地變化。

而是調用這個函數,如果我試圖運行在命令提示符git的命令「混帳底墊」的,本地文件沒有得到更新,所以它的罰款。

後來我試着下面的鏈接方式,

https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain/RebaseToOriginMaster.java

InteractiveHandler handler = new InteractiveHandler() { 
    @Override 
    public void prepareSteps(List<RebaseTodoLine> steps) { 
     for(RebaseTodoLine step : steps) { 
      try { 
       step.setAction(Action.EDIT); 
      } catch (IllegalTodoFileModification e) { 
       throw new IllegalStateException(e); 
      } 
     } 
    } 

    @Override 
    public String modifyCommitMessage(String oldMessage) { 
     return oldMessage; 
    } 
}; 
git.rebase().setUpstream("origin/"+branch).runInteractively(handler).call(); 

在此之後,我能夠繼續衍合我的局部變化,但衝突的文件現在得到與遠程儲存的值覆蓋。

而且也是「衝突列表」和「失敗的路徑圖」的RebaseResult爲null,因爲對此我無法找到也更新了文件。

難道我在這裏做得不對或者是與JGit的問題。我也沒有得到任何適當的文檔。

+0

關於你提到的第二個問題(與InteractiveHandler重訂):沒有一個獨立的片斷也不可能知道爲什麼衍合做它做什麼。 –

回答

0

如果你發現git.pull().setRebase(true)產生不同的結果比原生的Git,你應該file a bug report

請注意,您應該提供斷言預期的結果和必要的步驟,採取與本地git的一個(失敗的)測試案例。