Я думаю, что путаница возникает из-за различных стилей работы с git. Некоторые из них существуют из-за личных предпочтений, а некоторые из-за другого рабочего процесса (например, работа локально или с пультом, или использование gitflow).
Итак, немного о командах, о которых вы спрашивали:
git pull origin master
- это обновит локальную основную ветвь так, чтобы она соответствовала удаленной главной ветке. Предполагая, что вы не работаете напрямую с локальной веткой master, это всегда должно работать и давать вам последние доступные изменения. git pull origin <other_branch>
- То же, что и в предыдущем пункте, но для другой ветки. он извлекает удаленную копию вашей локальной ветки, объединяет удаленные изменения с вашими локальными изменениями, давая вам самую последнюю ветку, которая включает ваши изменения. По сути, это похоже на сохранение части работы в удаленной ветви, внесение некоторых локальных изменений, а затем создание нового документа на основе обоих изменений. Вы можете заставить его сделать rebase
вместо слияния, передав флаг git pull --rebase origin master
Работа локально (без облака)
Так что, в основном, когда вы Закончив работу над функцией ошибки, вы хотите сделать следующее:
- получить и объединить последние сохраненные изменения для ветви, которую вы хотите объединить в источнике (давая вам все изменения) [
git pull origin models
] - Переместить в основную ветвь [
git checkout master
] - Объединить ветвь элементов с основной ветвью (чтобы функция стала частью главной ветви). ответвление) [
git merge models
]
Это будет работать так, как вы ожидаете, пока вы работаете в одиночку и не планируете, чтобы кто-то еще проверял ваши изменения!
Работа с другими людьми
Если вы планируете работать с другими людьми, вы, вероятно, захотите, чтобы кто-то go отредактировал ваши изменения, чтобы убедиться, что все работает должным образом, прежде чем объединить новую функцию с основной веткой .
Так что вы не хотите git merge models
к вашему локальная главная ветвь , но создайте запрос на извлечение в удаленной службе git и объедините удаленную ветвь функций с удаленной главной ветвью (после проверки кода). имеет смысл?
Вот удаленный способ сделать это (немного проще локально, но с дополнительными шагами в самой службе): (Должно быть сделано в ветви функций)
# get all the features that got merged into the master branch remotely (by other users) and merge them into your feature branch
git rebase origin/master
# get the latest changes (saved by you on a different machine) from the cloud and merge with local changes:
git pull origin models
# commit all the new changes locally
git add .
git commit
# push back to the cloud!
git push origin
Теперь на Github вы можете создать пул-запрос (вы увидите подсказку для этого). После проверки кода вы можете нажать «Merge Pull Request», чтобы объединить эту ветку с мастером.
Вы можете видеть, в какую ветку вы собираетесь объединиться: