Как я могу сделать исправление на master и интегрировать его в мою менее стабильную ветку (и)?
Сейчас я использую Git для одного из моих проектов, и мне это нравится.
Однако, так как я работаю над проектом только один, я использовал только команды
git status
git add .
git commit -m 'message here'
git push origin master
Я давно перенес проект на удаленный доступ (я Capistrano для развертывания), и все работает отлично.
Теперь я хочу изменить дизайн сайта, но сохранить логику нетронутой. Я предполагаю, что мне нужно создать новую ветку (давайте назовем это newdesign
) для этого.
Что мне интересно, так это то, что если я работаю над newdesign
ветви, и я вижу ошибку в master
ветка, как можно исправить ошибку на master
а затем интегрировать это исправление в newdesign
ветка, чтобы последние были в курсе актуальной логики?
2 ответа
Это классический случай, когда вы можете воспользоваться ветками Git. Вот рабочий процесс, который вы должны использовать.
Допустим, вы создали develop
ветвь вытекает из master
и вы сделали несколько коммитов на этой ветке:
Внезапно, вы понимаете, что вам нужно быстро исправить ошибку на master
; вместо того, чтобы работать непосредственно от master
, вы должны создать кратковременную ветку исправления ошибок, чтобы изолировать задачу исправления ошибок от вашего master
ветка:
git checkout master
git checkout -b bugfix
Сделав один или несколько коммитов на bugfix
филиал, чтобы решить проблему,
Вы должны убедиться, что все работает как надо (запустить тесты и т. д.). Когда вы довольны состоянием вашего кода на bugfix
слить это в master
:
git checkout master
git merge bugfix
На этом этапе вы можете нажать (теперь исправлено) master
перейти к удаленному и удалить bugfix
ветка:
git push origin master
git branch -d bugfix
Теперь, чтобы интегрировать последние изменения на master
в develop
По сути, у вас есть два варианта.
сливаться
master
вdevelop
, запустив:git checkout develop git merge master
В качестве альтернативы, ребаз
develop
на вершинеmaster
, запустив:git checkout develop git rebase master
В любом случае ваш develop
В ветке теперь будет исправление, и вы сможете продолжить работу над ним.
Предположим, у вас есть ветки master и dev.
Вы работаете над dev для своих новых функций, и вы исправляете master.
Затем вы проверяете dev и объединяете master с dev. Таким образом, мастер исправлен, и dev может извлечь выгоду из исправления, которое вы сделали, и сохраняет свою историю.
Кроме того, вы можете перебазировать dev поверх ветки. Это дает вам "более чистую" историю в том смысле, что у вас нет точек слияния.
Смотрите руководство git по слиянию: http://git-scm.com/docs/git-merge