Это происходит потому, что при исправлении конфликта вы удалили весь код из исправления, примененного к ветви, на которой вы перебираете.Используйте git rebase --skip
для продолжения.
Немного подробнее:
Обычно, исправляя конфликт во время перебазировки, вы редактируете конфликтующий файл, сохраняя часть или весь код в патче в данный момент.применяется к ветке, на которую вы перебазируете.После исправления патча и выполнения
git add your/conflicted/file
git status
вы получите (обычно зеленую) строку, показывающую измененный файл
, модифицированный: ваш / конфликтный / файл
git rebase --continue будет нормально работать в этой ситуации.
Иногда, однако, при разрешении конфликта вы удаляете все в своем новом патче, оставляя только код из ветви, на которую вы перебазировали.Теперь, когда вы добавляете файл, он будет точно таким же, как тот, на который вы пытались сделать ребазинг.Состояние git не будет отображать зеленую строку, отображающую измененные файлы.Теперь, если вы сделаете
git rebase --continue
, git будет жаловаться с
Без изменений - вы забыли использовать 'git add'?
ЧтоGit на самом деле хочет, чтобы вы делали в этой ситуации, используя
git rebase --skip
, чтобы пропустить патч.Раньше я никогда не делал этого, так как я всегда был не уверен, что будет пропущено, если я это сделаю, для меня не было очевидным, что на самом деле означает «пропустить этот патч».Но если у вас нет зеленой строки с измененным
: ваш / конфликтный / файл
после редактирования конфликтующего файла, его добавления и выполнения состояния git, тогда вы можетебудьте уверены, что вы удалили весь патч, и вместо этого вы можете использовать
git rebase --skip
, чтобы продолжить.
В оригинальном сообщении говорилось, что это иногда работает:
git add -A
git rebase --continue
# works magically?
... но не полагайтесь на это (и не добавляйте оставшиеся файлы в вашпапки репозитория)