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!
Я хотел бы понять, почему добавлен "Мастер объединения местоположений местоположения".
Ответы
Ответ 1
Когда вы выполнили git-pull
, изменения в удаленной ветке были объединены в вашу локальную ветвь. Автоматически сгенерированная фиксация означает это.
Слияние могло привести к конфликтам, которые затем должны были быть решены вручную. В вашем конкретном случае этого не произошло, и git мог позаботиться обо всем.
Ответ 2
Если изменения могут быть другими, может быть хорошей идеей сделать git pull --rebase
(т.е. добавить новые изменения после удаленных изменений, это может привести к конфликтам, которые вам придется решать), а затем git push
результат. Будьте осторожны, это создает новые коммиты, которые никогда не существовали раньше (как и любая переработка истории), но она дает чистую линейную историю (нет путаницы сливаний)