Как решить конфликт с git-svn? - PullRequest
       45

Как решить конфликт с git-svn?

51 голосов
/ 22 сентября 2008

Каков наилучший способ разрешения конфликта при выполнении git svn rebase, и ветвь git, на которой вы находитесь, становится "(без ветки)"?

Ответы [ 2 ]

88 голосов
/ 22 сентября 2008

Во время выполнения git svn rebase, если у вас есть конфликты слияния, вот несколько вещей, которые следует запомнить:

1) Если что-то плохое случится во время перебазирования, вы окажетесь в (no-branch) ветви.

2) Если вы запустите git status, вы увидите файл .dotest в вашем рабочем каталоге. Это безопасно игнорировать.

3) Если вы хотите прервать ребаз, используйте следующую команду. 1

git rebase --abort

4) Если у вас конфликт слияния:

  1. Вручную отредактируйте файлы для разрешения конфликтов
  2. Произведите любые изменения с git add [file]
  3. Продолжить перебазирование с помощью git rebase --continue 2
    • Если git спрашивает: «Вы забыли позвонить git add?», То правки превратили конфликт в неактивное изменение 3 . Продолжайте с git rebase --skip

Возможно, вам придется повторять этот процесс, пока перебазирование не будет завершено. В любой момент вы можете git rebase --abort отменить и отменить перебазирование.


1: нет опции --abort для git svn rebase.

2: нет опции --continue для git svn rebase.

3: Это очень странно, но файлы находятся в состоянии, в котором git считает, что они остались такими же после этого конкретного патча. Решение состоит в том, чтобы "пропустить" этот патч на ребазе.

26 голосов
/ 22 сентября 2008

Вы можете использовать git mergetool для просмотра и редактирования конфликтов обычным способом. Если вы уверены, что конфликты разрешены, выполните git rebase --continue, чтобы продолжить перебазирование, или, если вы не хотите включать эту ревизию, выполните git rebase --skip

...