Я разрабатывал новую функцию в новой ветке, и на ее стороне было внесено довольно много изменений в мою основную ветку.
Можно ли объединить основную ветку с моей новой веткой, чтобы поддерживать ее актуальность, чтобы у меня не было слишком много конфликтов слияния после завершения новой функции?
Ответы:
Вы можете либо,
git merge master
либоgit rebase master
, в этом случае я бы предпочел git rebase .Потому что
git rebase
делает так, как будто изменения в ветви функций были сделаны поверх изменений в основной ветви, что упрощает граф версий.Rebase
Взяв пример из руководства по git rebase ,
git rebase master
в веткеfeature
:Однако
git rebase
подходит только тогда, когда ветвь не была распределена, или возникнет путаница и дополнительная работа в нисходящем направлении, потому что старые коммиты A, B, C теперь заменены новыми коммитами A ', B', C ', плюс F и G, которые не были там раньше.Фактический результат после
git rebase master
в веткеfeature
это:Коммиты A, B, C висят после перебазирования, но достижимы до конца
git reflog feature
.Объединить
Если кто-то потянул вашу ветку или вы куда-то ее подтолкнули, вы должны вместо этого слиться с ней, чтобы избежать путаницы и дополнительной работы на другом конце. См. Восстановление из восходящей версии .
Это результат
git merge master
в веткеfeature
:В качестве альтернативы, если вы находитесь
git merge feature
в веткеmaster
, это будет выглядеть так:источник
git rebase master
, и она "перебазирует" изменения в ветви функций, чтобы они "основывались" на изменениях в основной ветке. Если изменения в основной ветке конфликтуют с изменениями в ветви функций, git попросит вас разрешить их и продолжить, пропустить или прервать. Если вы не уверены, что можете проверить тестовую ветку, чтобы попробовать ееgit checkout -b test-feature feature
(при условии, что ваша функциональная ветка называется «feature»).git rebase
следует использовать только в том случае, если ветвь не была распространена, что, как я предполагал, имело место, поскольку вы сказали, что это новая ветка, извините за это. См. Восстановление из исходной версии в документах, с которыми я связан. Вам придется использоватьgit merge
вместо этого. И вы можете использовать,git reflog
чтобы найти свой предыдущий заголовок ветви функции, если вы хотите получить его обратно.