Подтвердить что ты не робот

Git: Почему "Объединить ветку" хозяина "..."? когда тянуть и толкать

Я все еще новичок git. Я изменил некоторые исходные файлы и зафиксировал их. Тогда я сделал git push. Но я получил эту ошибку.

To /foo/bar/  ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '/foo/bar/' To prevent you from
losing history, non-fast-forward updates were rejected Merge the
remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

Этот отказ кажется, что я не git pull до push. Итак, я сделал git pull. Хорошо, были два измененных файла другими.

Затем я смог git push успешно выполнить.

Вопрос: В этом случае я вижу еще один журнал, например, с моим исходным сообщением о фиксации:

commit 59e04ce13b8afa...
Merge: 64240ba 76008a5
Author: Jone Doe <[email protected]>
Date:   Fri Mar 15 11:08:55 2013 -0700

    Merge branch 'master' of /foo/bar/

И это мое оригинальное сообщение о фиксации.

commit 64240bafb07705c...
Author: Jone Doe <[email protected]>
Date:   Fri Mar 15 11:06:18 2013 -0700

    Fixed bugs and updated!

Я хотел бы понять, почему добавлен "Мастер объединения местоположений местоположения".

4b9b3361

Ответ 1

Когда вы выполнили git-pull, изменения в удаленной ветке были объединены в вашу локальную ветвь. Автоматически сгенерированная фиксация означает это.

Слияние могло привести к конфликтам, которые затем должны были быть решены вручную. В вашем конкретном случае этого не произошло, и git мог позаботиться обо всем.

Ответ 2

Если изменения могут быть другими, может быть хорошей идеей сделать git pull --rebase (т.е. добавить новые изменения после удаленных изменений, это может привести к конфликтам, которые вам придется решать), а затем git push результат. Будьте осторожны, это создает новые коммиты, которые никогда не существовали раньше (как и любая переработка истории), но она дает чистую линейную историю (нет путаницы сливаний)