2016-06-25 7 views
0

origin/mybranchからmybranchをリベースしようとしています。私はこのコードを使用しています:これをやった後JGit rebaseはローカルファイルを保持し、競合ファイルリストを取得します

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

を、競合するファイルは、分岐

に基づいて上流、

< < < < < < <のようなコメントで更新取得されていますコミットしてもリポジトリの内容が上書きされるようになりました私のローカルな変更をしました。

コマンドプロンプトでgitコマンド "git rebase"を実行しようとしたときにこの関数を呼び出すのではなく、ローカルファイルが更新されないので問題ありません。

その後、私は、この後

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

2番目の質問(InteractiveHandlerを使用したリベース)について:自己完結型スニペットがないと、なぜrebaseがそれをするのかを知ることは不可能です。 –

答えて

0

git.pull().setRebase(true)がネイティブGitとは異なる結果をもたらすことがわかった場合は、file a bug reportです。

期待した結果とネイティブgitで取るために必要なステップをアサートする(失敗した)テストケースを提供する必要があります。

関連する問題