2016-06-25 7 views
0

Ich versuche, meinbranch von Ursprung/mybranch zu rebasen. Ich verwende diesen Code:JGit Rebase lokale Dateien behalten und Konfliktlisten Liste

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

Nachdem Sie das getan, widersprüchliche Dateien werden immer wie

mit den Kommentaren aktualisiert

< < < < < < < Upstream, basierend auf einem Ast

Aber lokale Änderungen ohne Konflikte werden mit dem Repository-Inhalt überschrieben, obwohl ich commit habe meine lokalen Änderungen.

Anstatt diese Funktion aufzurufen, wenn ich versucht habe, git Befehl "Git Rebase" in der Eingabeaufforderung zu starten, werden lokale Dateien nicht aktualisiert, so ist es in Ordnung.

Später habe ich versucht, den folgenden Link Ansatz,

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(); 

Danach konnte ich meine lokale Änderungen Fütterungsmaterial halten, aber die in Konflikt stehenden Dateien werden nun mit Remote-Repository Werte überschrieben bekommen .

Und auch die "conflict list" und "failing path maps" von RebaseResult sind null, weshalb ich die Dateien auch nicht finden kann.

Mache ich hier etwas falsch oder ist es ein Problem mit JGit. Ich habe auch keine richtigen Dokumente bekommen.

+0

In Bezug auf Ihre zweite Frage (Rebase mit einem InteractiveHandler): Ohne ein eigenständiges Snippet ist es unmöglich zu sagen, warum Rebase das tut, was es tut. –

Antwort

0

Wenn Sie herausgefunden haben, dass git.pull().setRebase(true) andere Ergebnisse liefert als natives Git, sollten Sie file a bug report.

Bitte beachten Sie, dass Sie einen (fehlgeschlagenen) Testfall angeben sollten, der das erwartete Ergebnis und die notwendigen Schritte mit nativem Git bestätigt.