Путать с ветвлением в git - PullRequest
2 голосов
/ 14 января 2020

Итак, я извлек ветку из основной ветки.

master

  • модели

У меня есть некоторые изменения в моделях . Теперь я закончил работу, которую я должен был выполнить в ветке models .

Точно так же я создам следующую ветку и сделаю там некоторую работу и pu sh сама эта ветвь.

Итак, что мне делать дальше?

  • Должен ли я сделать это?
git pull origin models
git checkout master
git merge models
git pull origin nextBranch
git checkout master
git merge nextBranch

Теперь это говорится: «Всегда оставайтесь в курсе с мастером». Я не понимаю, что это значит. Мы ничего не пытаемся освоить, верно? Мы подталкиваем к местным филиалам. Кроме того, я видел людей, которые всегда делают git pull origin master. Может кто-нибудь объяснить мне правильный рабочий процесс? .

Не знаю, я просто запутался.

Ответы [ 2 ]

9 голосов
/ 14 января 2020

Я думаю, что путаница возникает из-за различных стилей работы с 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», чтобы объединить эту ветку с мастером. enter image description here

Вы можете видеть, в какую ветку вы собираетесь объединиться: enter image description here

2 голосов
/ 14 января 2020

git pull origin master говорит git обновить текущую ветку с тем, что в данный момент находится в master. Это команда, которую вы хотите регулярно использовать при работе в локальной ветке, чтобы убедиться, что у вас нет больших конфликтов слияния, которые нужно разрешить, когда вы «закончите» и готовы объединить свой код.

Когда вы сделано с работой над вашей веткой функций (в данном случае это называется «модели»). Звучит так, как будто вы хотите объединить это обратно с мастером, и pu sh it

Итак, локально вы бы сделали

git checkout master
git merge models
git push

, который переключит вас обратно на ветку master, объединить изменения, которые вы имели в ветке моделей, переходят в ветку master, а затем pu sh эти изменения возвращаются в ваш центральный репозиторий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...