"git pull" или "git merge" между ветками master и development - PullRequest
238 голосов
/ 29 декабря 2010

У меня есть ветка master и ветка develop для работы над несколькими изменениями.Мне нужно объединить изменения из master в develop, но в конечном итоге объединю все из develop в master.Я имею в виду два разных рабочих процесса:

  1. git pull origin master в develop ветвь
  2. git merge master в develop ветвь

Чтолучший способ сделать это и почему?

Ответы [ 5 ]

343 голосов
/ 29 декабря 2010

Этот рабочий процесс работает лучше всего для меня:

git checkout -b develop

... внести некоторые изменения ...

... мастер уведомлений обновлен ...

... внести изменения в разработку ...

git checkout master
git pull

... вернуть эти изменения в разработку ...

git checkout develop
git rebase master

... внести еще некоторые изменения ...

... поручить им развиваться ...

... объединить их в мастера ...

git checkout master
git pull
git merge develop
101 голосов
/ 02 февраля 2011

Будьте осторожны с ребазой.Если вы делитесь своей веткой разработки с кем-либо, rebase может привести к путанице.Rebase подходит только для ваших собственных локальных ветвей.

Правило большого пальца: если вы выдвинули ветку в начало, не используйте rebase.Вместо этого используйте слияние.

23 голосов
/ 29 декабря 2010

Лучший подход для такого рода вещей, вероятно, git rebase. Он позволяет вам перенести изменения из master в вашу ветку разработки, но оставить всю вашу работу по разработке "поверх" (позже в журнале коммитов) материала из master. Когда ваша новая работа будет завершена, слияние с мастером будет очень простым.

5 голосов
/ 30 декабря 2010

Если вы ни с кем не делитесь веткой разработки, то я просто перебазирую ее каждый раз, когда мастер обновляется, таким образом у вас не будет коммитов слияния по всей вашей истории, как только вы вернете разработку обратно в мастер.Рабочий процесс в этом случае будет следующим:

> git clone git://<remote_repo_path>/ <local_repo>
> cd <local_repo>
> git checkout -b develop
....do a lot of work on develop
....do all the commits
> git pull origin master
> git rebase master develop

Вышеуказанные шаги гарантируют, что ваша ветвь разработки будет всегда в курсе последних изменений из основной ветки.Как только вы закончите с разработкой ветки, и она вернется к последним изменениям на мастере, вы можете просто объединить ее:

> git checkout -b master
> git merge develop
> git branch -d develop
1 голос
/ 06 сентября 2016

мое правило:

rebase для веток с с таким же именем , merge в противном случае.

примерами для одинаковых имен будут master, origin/master и otherRemote/master.

, если develop существует только в локальном репозитории, и он всегда основан на недавнем коммите origin/master, вы должны назвать его master и работать там напрямую. это упрощает вашу жизнь и представляет вещи такими, какие они есть на самом деле: вы непосредственно разрабатываете ветку master.

если develop является общим, его не следует перебазировать на master, просто объединить обратно с --no-ff. вы разрабатываете на develop. master и develop имеют разные имена, потому что мы хотим, чтобы они были разными и оставались отдельными. не делайте их одинаковыми с rebase.

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