Как я могу продолжить слияние после двойной модификации? - PullRequest
8 голосов
/ 18 апреля 2011

Я использую git rebase -i, чтобы переписать историю - в этом случае внесите небольшое изменение в набор изменений более раннего коммита.Другими словами,

A---B---C master

      --->

A---B'--C master

Я знаю, C тоже неявно меняется, но вы поняли идею.Вот мой прогресс:

  1. git rebase -i HEAD~2
  2. Изменить B с keep на edit.
  3. Редактировать файл.
  4. git commit -a --amend
  5. git rebase --continue
  6. «Не удалось применить [C] ...»

Я разрешил конфликтующие строки в C, но я не уверен, как пометить его как разрешенный, чтобы можно было продолжить перебазирование.git commit --amend пытается изменить B, а git rebase --continue жалуется, что рабочее дерево загрязнено.(И, конечно же, git status показывает файл как «оба измененный».)

Что мне нужно сделать, чтобы вернуть этот ребаз в нужное русло?

Ответы [ 2 ]

10 голосов
/ 18 апреля 2011

Когда вы сталкиваетесь с конфликтами, вы должны увидеть сообщение примерно так:

error: could not apply 45cb26a... <commit message subject>
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' and run 'git rebase --continue'

И это именно то, что вам нужно сделать:

# resolve the conflicts somehow
git add <conflicted-file>
git rebase --continue

Не пытайтесьиспользовать commit --amend.HEAD (текущий коммит) по-прежнему относится к предыдущему, поскольку конфликты помешали сделать этот коммит, как вы видели, который только вносит изменения в уже примененный коммит.rebase --continue продолжит создание нового коммита, содержащего разрешенные конфликты.

1 голос
/ 18 апреля 2011

Вы пытались сделать это явно, то есть: git add B', затем зафиксировать его с помощью --amend, затем выполнить git rebase --continue?

...