Основной сценарий:
git fetch - стягивает удаленные изменения в ветках, но не мерджит с локальными.
git rebase - берет комиты локаного master и размещает в temp, потом берет все удаленные комиты и заливает в локальный master, после этого из temp заливате в след локальные. Так мы получаем не мерджи, а последовательные комиты в истории.
Тест кейс: получили задачу разрабатываем ее в новой ветке admin и уже имеем пару комитов, тут гарячка нужно сделать фикс в масетере, преключаемся на него делаем комиты, теперь задачка не мерджить это, а сделать все-таки коммит за коммитом. Делем мы это так
git checkout admin
git rebase master - комиты мастера оказываются впереди коммитов админа, после точки расхождения
git checkout master - возвращаеся на мастер
git merge admin - делаем мы это спокойно потому что ничего не пересекается, вся история последовательная
В случае конфликта:
можно разрешить руками и:
После этого если написать статус мы заметим что мы не находимся ни на одной из веток. Нам нужно застейджить те файлы, которые мы только что избавили от конфликтов, хоть мы и не на ветке, но после статуса видно какие файлы изменены.
git add resolved_file
Я так понимаю отставить в состоянии конфликта и продолжить слияние:
git rebase --skip
Остановить слияние и откатиться до поточного состояниея:
git rebase --abort
git fetch - стягивает удаленные изменения в ветках, но не мерджит с локальными.
git rebase - берет комиты локаного master и размещает в temp, потом берет все удаленные комиты и заливает в локальный master, после этого из temp заливате в след локальные. Так мы получаем не мерджи, а последовательные комиты в истории.
Тест кейс: получили задачу разрабатываем ее в новой ветке admin и уже имеем пару комитов, тут гарячка нужно сделать фикс в масетере, преключаемся на него делаем комиты, теперь задачка не мерджить это, а сделать все-таки коммит за коммитом. Делем мы это так
git checkout admin
git rebase master - комиты мастера оказываются впереди коммитов админа, после точки расхождения
git checkout master - возвращаеся на мастер
git merge admin - делаем мы это спокойно потому что ничего не пересекается, вся история последовательная
В случае конфликта:
можно разрешить руками и:
После этого если написать статус мы заметим что мы не находимся ни на одной из веток. Нам нужно застейджить те файлы, которые мы только что избавили от конфликтов, хоть мы и не на ветке, но после статуса видно какие файлы изменены.
git add resolved_file
git rebase --continue
Я так понимаю отставить в состоянии конфликта и продолжить слияние:
git rebase --skip
Остановить слияние и откатиться до поточного состояниея:
git rebase --abort
Комментариев нет:
Отправить комментарий