Как разрешить конфликт с git-svn?
Вопрос
Как лучше всего разрешить конфликт при выполнении git svn rebase
, и ветка git, в которой вы находитесь, становится «(без ветки)»?
Решение
Вы можете использовать git mergetool
просматривать и редактировать конфликты обычным способом.Как только вы убедитесь, что конфликты разрешены, сделайте git rebase --continue
чтобы продолжить перебазирование, или если вы не хотите включать эту ревизию, сделайте git rebase --skip
Другие советы
Во время выполнения git svn rebase
, если у вас есть конфликты слияния, вот что следует запомнить:
1) Если во время перебазирования произойдет что-то плохое, вы окажетесь на (no-branch)
ветвь.
2) Если ты бежишь git status
, вы увидите .dotest
файл в вашем рабочем каталоге.Это можно игнорировать.
3) Если вы хотите прервать перебазирование, используйте следующую команду.1
git rebase --abort
4) Если у вас есть конфликт слияния:
- Вручную отредактируйте файлы для разрешения конфликтов.
- Запланируйте любые изменения с помощью
git add [file]
- Продолжите перебазирование с помощью
git rebase --continue
2- Если git спросит:"ты забыл позвонить
git add
?", то правки превратили конфликт в бездействующее изменение3.Продолжить сgit rebase --skip
- Если git спросит:"ты забыл позвонить
Возможно, вам придется повторять этот процесс до завершения перебазирования.В любой момент вы можете git rebase --abort
отменить и отказаться от перебазирования.
1:Здесь нет --abort
вариант для git svn rebase
.
2:Здесь нет --continue
вариант для git svn rebase
.
3:Это очень странно, но после этого конкретного патча файлы находятся в состоянии, в котором git считает, что они остались прежними.Решение состоит в том, чтобы «пропустить» этот патч на Rebase.