проблема с сообщением фиксации после разрешения конфликтов при слиянии - PullRequest
5 голосов
/ 24 марта 2011

Я новичок в Git. В настоящее время я испытываю этот сценарий:

Шаг 0. Я работаю над sub -ответом

Шаг 1. Я добавил и подтвердил file1, file2, file3 на моем sub -выделении с сообщением коммита msg1, msg2, msg3 соответственно.

Шаг 2. I checkout master для переключения на master branch

Шаг 3. I pull origin master, чтобы обновить основную ветку с кодом последней версии источника

Шаг 4. Я merge sub-branch, чтобы объединить мой рабочий код с текущим основным кодом ветви

Затем я получил конфликт в file2 ,

Затем я вручную разрешил конфликты. Теперь необходимо добавить file2 , поскольку в этом файле есть изменения.

Шаг 5. Я add file2 в основной ветке, потому что я разрешил конфликты в этом файле

Шаг 6. Какое сообщение о коммите я должен написать сейчас? только msg2 ? или msg1, msg2, msg3 все нужно переписать сейчас? (Я не хочу терять сообщения фиксации msg1, msg2, msg3 для файлов, с которыми я работал)

Ответы [ 2 ]

8 голосов
/ 24 марта 2011

Вы не пишете новое сообщение о коммите для этих объединенных коммитов;вы пишете сообщение коммита для коммита слияния.Ваша история будет выглядеть так:

- x - o - o - o (origin/master) - X (master)
   \                             /
    1 - 2 - 3 (sub-branch) ------

Сообщение коммита, которое вы пишете, предназначено для X.Коммиты 1, 2 и 3 являются предками, все еще в истории, и у них все еще есть свои сообщения коммитов.Нет возможности изменить их слиянием.

Сообщение коммита для X, если у вас нет конфликтов, по умолчанию будет иметь значение, подобное Merge branch 'sub-branch'.Если у вас есть конфликты, он все равно будет иметь в качестве первой строки, но также список файлов, которые имели конфликты:

 Merge branch 'sub-branch'

 Conflicts:
     file2

Это мягкий намек, что вы сделали что-то более важное,просто простое слияние - вам пришлось выполнить некоторую ручную работу для разрешения конфликтов в file2.Если хотите, вы можете добавить краткую заметку о том, что вызвало эти конфликты и как они были разрешены.В противном случае, просто используйте это сообщение как есть!Помните, что это только описание слияния (и разрешения конфликтов).Коммиты, которые вы объединили, имеют свои собственные сообщения о коммитах.

3 голосов
/ 24 марта 2011

После разрешения конфликта и git add <conflicted file> при переходе к git commit он должен предоставить предварительно скомпилированное сообщение для слияния и любых разрешенных коммитов. Не так ли? Другие объединенные коммиты не будут потеряны, вам не нужно ничего переписывать.

  1. Передать в BranchB
  2. git checkout master
  3. git pull origin master
  4. git merge BranchB
  5. Разрешение конфликтов в файле (ах)
  6. git add <conflicted file(2)>
  7. git commit

Шаг 7: если вызывается без параметров, следует открыть редактор сообщений о фиксации по умолчанию с достойным сообщением, объясняющим слияние и разрешенные конфликты (я считаю)

...