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,
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.
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. –