Не могу разобраться с GIT. Объясните, пожалуйста, что делать в таком случае?
Недавно начал изучать git. Но изучение "встало" на таком моменте.
Есть три ветки:
master, test и develop.
Делаются крупные доработки по проекту в подветки update ветки develop.
Но неожиданно появилась одна срочная задача, например - исправить какой-либо баг.
Я правильно понимаю, что в такой ситуации нужно следовать таким шагам:
1. Создать подветку, например bugfix в ветке develop
2. Исправить баг - закоммитить.
3. Смерджить с develop, удалить ветку bugfix.
4. Ветку develop смерджить с веткой test.
5. Ветку test выкатить на тестовый сервер - протестировать, что все работает, как надо.
6. Ветку test смерджить с master и выкатить на продакшн сервер.
Но, что потом делать с теми правками, которые делались в ветке update? Ведь в этой ветке не будет исправленного бага.
Подмержить туда (в update) актуальную версию develop c необходимыми фиксами.
Можно ребейзить develop или черрипикать определенные коммиты с фиксами, но это поломает историю. А так - наглядно видно, что куда, после чего и с какой мотивацией...
После того как ветка девелоп будет обновлена до последней версии перейдите в свою ветку update и сделайте git rebase develop. Таким образом вы подтянете к себе в update самые последние изменения, и при этом обеспечите что ваши коммиты в этой ветке будут расположены впереди.
Это если вы работаете один. А если это ветка доступна удаленный нескольким девелоперам, придется делаться форс-пуш и у других девов начинаются проблемы с апдейтом.
fetis26: нет, rebase обновит текущую ветку, и все новые коммиты, которые еще не запушены, будут перенесены наверх. И мы так делаем в гигантской команде.
fetis26: буквоедство.. надо было сказать, что сначала актуализируем местный девелоп? так это и без комментариев понятно. или git fetch origin; git rebase origin/develop
aol-nnov: нет, я про другое. когда делаешь ребейз комиты заменяются. Соотв когда др. девелопер делает пул этой ветки он получает конфликт со своей локальной.
fetis26: мусье, видимо, с ребейзом толком не работал..
когда ты ребейзишь меструю ветку, на которой ведешь разработку на ту, которую она трекает в апстриме, получаются манипуляции, похожие на фаст-форвард мёрж.
грубо говоря, твои незапущенные коммиты "откатываются" до общего предка с апстримом, потом фаст-форвард и твои коммиты переприменяются к получившемуся результату, существующие коммиты не заменяются.