У меня есть master
ветка и develop
ветка для работы над несколькими изменениями. Мне нужно объединить изменения с master
в develop
, но в конечном итоге слить все из develop
в master
. Я имею в виду два разных рабочих процесса:
git pull origin master
вdevelop
филиалgit merge master
вdevelop
филиал
Какой лучший способ сделать это и почему?
git pull
=git fetch
+git merge FETCH_HEAD
Ответы:
Будьте осторожны с ребазой. Если вы делитесь своей веткой разработки с кем-либо, rebase может сделать беспорядок. Rebase хорош только для ваших местных отделений.
Правило большого пальца: если вы выдвинули ветку в начало координат, не используйте rebase. Вместо этого используйте слияние.
источник
git push origin rebasedBranch --force
на частном репо? Единственный пользователь - это я.Этот рабочий процесс работает лучше всего для меня:
... внести некоторые изменения ...
... мастер уведомлений обновлен ...
... совершать изменения, чтобы развиваться ...
... вернуть эти изменения в развитие ...
... внести еще некоторые изменения ...
... поручить им развиваться ...
... объединить их в мастера ...
источник
git pull
прямо перед финаломgit merge develop
. Какова цель этого?git pull --rebase origin master
на вашей ветке разработки немного быстрее.Вероятно, лучший подход для такого рода вещей
git rebase
. Он позволяет вам перенести изменения из master в вашу ветку разработки, но оставить всю вашу работу по разработке «поверх» (позже в журнале коммитов) материала из master. Когда ваша новая работа будет завершена, слияние с мастером будет очень простым.источник
develop
никто не поделится.develop
мы расскажем об этом другим участникам, как бы мы обновились,develop
когда некоторые исправления были загружены напрямуюmaster
? Должны ли мы сделать слияние, то естьgit checkout master && git pull --rebase && git checkout develop && git merge master
? Я оставил комментарий к ответу с наибольшим количеством голосов выше, в котором также подробно описана эта проблема.Если вы ни с кем не делитесь веткой разработки, тогда я просто перебазирую ее каждый раз, когда мастер обновляется, таким образом у вас не будет коммитов слияния по всей вашей истории, когда вы вернете разработку обратно в мастер. Рабочий процесс в этом случае будет следующим:
Вышеуказанные шаги гарантируют, что ваша ветвь разработки всегда будет в курсе последних изменений из основной ветки. Как только вы закончите с разработкой ветки, и она вернется к последним изменениям на master, вы можете просто объединить ее:
источник
мое эмпирическое правило таково:
примеры же имена будут
master
,origin/master
иotherRemote/master
.если
develop
существует только в локальном репозитории, и он всегда основан на недавнемorigin/master
коммите, вы должны вызвать егоmaster
и работать там напрямую. это упрощает вашу жизнь и представляет вещи такими, какие они есть на самом деле: вы непосредственно развиваетесь вmaster
отрасли.если
develop
используется общий доступ, он не должен быть перебазированmaster
, просто объединен с ним--no-ff
. вы развиваетесь наdevelop
.master
и уdevelop
нас разные имена, потому что мы хотим, чтобы они были разными и оставались отдельными. не делайте их такими жеrebase
.источник