Это очень практичный вопрос, но все ответы выше не практичны.
Как и
git checkout master
git pull origin master
git merge test
git push origin master
Этот подход имеет два вопроса :
Это небезопасно, потому что мы не знаем, есть ли какие-либо конфликты между тестовой ветвью и главной ветвью.
Это "сжало бы" все коммиты тестав одно слияние совершить на мастере;то есть в основной ветке, мы не можем видеть все журналы изменений тестовой ветви.
Итак, когда мы подозреваем, что будут некоторые конфликты, у нас могут быть следующие операции git:
git checkout test
git pull
git checkout master
git pull
git merge --no-ff --no-commit test
Тест merge
до commit
, избегайте ускоренной фиксации на --no-ff
,
Если возник конфликт, мы можем запустить git status
, чтобы проверить подробности оконфликты и попытаться разрешить
git status
После того, как мы разрешим конфликты или если конфликта не будет, мы commit
и push
их
git commit -m 'merge test branch'
git push
Но так будетпотеря истории изменений, зарегистрированных в тестовой ветке, и другим разработчикам будет трудно понять историю проекта.
Так что лучший способ - использовать rebase
вместо merge
(предположим, когда в это время мы разрешили конфликты ветвей).
Ниже приведен один простой пример, для продвинутых операций, пожалуйста, обратитесь к http://git -scm.com / book /ru / v2 / Git-Branching-Rebasing
git checkout master
git pull
git checkout test
git pull
git rebase -i master
git checkout master
git merge test
Да, когдаЕсли вы сделали верх, все коммиты тестовой ветки будут перенесены в заголовок ветки Master.Основным преимуществом перебазирования является то, что вы получаете линейную и намного более чистую историю проекта.
Единственное, чего вам следует избегать: никогда не используйте rebase
в публичной ветке, например, в основной ветке.
Никогда не выполняйте операции , например:
git checkout master
git rebase -i test
Подробная информация о https://www.atlassian.com/git/tutorials/merging-vs-rebasing/the-golden-rule-of-rebasing
приложении: