Актуализация ветки в git
Подскажите пожалуйста, возможно я делаю что-то не так...
У меня есть рабочая ветка и во время разработки я пушил в гит изменения, в это время origin/main обновлялся. Я хочу стянуть все изменения и актуализировать локальную рабочею ветку и main.
- Я запушил последние изменения рабочей ветки в гит.
- Перешел в локальный main стянул все изменения в него (git pull)
- Перехожу обратно в рабочею ветку и прописываю (git rebase main). Возникают конфликты (что ожидаемо) моя рабочая ветка откатывается до первого коммита из этой ветки и предлагает решать конфликты с первым коммитом, а не с последним...
Ответы (1 шт):
rebase так и работает. он переписывает историю. и если у вас конфликт в первом коммите, то вам придется решать его ни 1 даже раз, а на протяжении всех коммитов ребейза. сам коммит, после решения конфилктов, будет переписан.
даже если вы пойдете по этому пути, возникнет неприятная ситуация, что в будущем вы даже не увидите "что было на стороне А, что на стороне Б, как вы это решили?".
а вот мердж наоборот, сравнит целые ветки и выкинет все конфликты 1 раз. и у него как раз можно будет посмотреть стороны А, Б, как решился конфликт.
лично я предпочитаю следующую стратегию в вашем случае:
делать ребейз, если он без конфликтов.
есть вылез хотя бы 1 -> аборт и подтягивать изменения через мердж.
да, ветка будет некрасивой, зато я в любой момент увижу и проблемное место, и как оно решилось.