2016-06-25 11 views
0

Я пытаюсь восстановить mybranch из origin/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 являются нулями, из-за которых я также не могу найти файлы, обновленные.

Я делаю что-то неправильно здесь или это проблема с JGit. У меня также не было должных документов.

+0

Что касается вашего второго вопроса (rebase with InteractiveHandler): без самодостаточного фрагмента невозможно сказать, почему rebase делает то, что он делает. –

ответ

0

Если вы обнаружили, что git.pull().setRebase(true) дает отличные результаты, чем native Git, вы должны file a bug report.

Обратите внимание, что вы должны предоставить (неудачный) тестовый пример, подтверждающий ожидаемый результат и необходимые шаги, которые необходимо предпринять с помощью встроенного git.