Обновите устаревшую ветку по отношению к master в репозитории Git

124

У меня есть репозиторий Git, в котором есть ветка (локальная и удаленная), которая устарела. Я хотел бы обновить эту ветку с помощью основной ветки, но я не знаю, как это сделать. Также вероятно будет много конфликтов слияния.

Как я могу привести или обновить эту устаревшую ветку до того же состояния, что и главная ветка?

Андрей
источник
1
если вы пришли сюда, чтобы узнать, как обновить устаревшую ветку вместо master в репозитории Git, если вы не внесли никаких изменений в локальную ветку, просто выполните «git pull»
убогое

Ответы:

152

Обновите основную ветку, что вам нужно сделать в любом случае.

Затем один из:

  1. Переустановите старую ветку на главную. Разрешите конфликты слияния во время перебазирования, и в результате получится обновленная ветка, которая сливается с мастер-классом.

  2. Объедините свою ветку с мастером и разрешите конфликты слияния.

  3. Объедините мастер в свою ветку и разрешите конфликты слияния. Затем слияние из вашей ветки в мастер должно быть чистым.

Ни один из них не лучше другого, просто у них разные модели компромиссов.

Я бы использовал подход rebase, который, на мой взгляд, дает более четкие общие результаты для последующих читателей, но это не что иное, как личный вкус.

Чтобы переустановить и сохранить ветку, вы должны:

git checkout <branch> && git rebase <target>

В вашем случае проверьте старую ветку, затем

git rebase master 

чтобы восстановить его против мастера.

Дэниел Питтман
источник
1
@Andrew: git rebase:)
CharlesB
1
git checkout $branch && git rebase $target- в вашем случае проверьте старую ветку, git rebase masterчтобы затем восстановить ее против мастера.
Daniel Pittman
3
Ваше репо публичное? Можно ли перебазировать, если он общедоступен?
event_jr
4
Хороший совет при использовании перебазирования в удаленных ветвях: делайте это перебазирование удаленной ветки по отношению к основной ветке только тогда, когда никто не нажимает коммиты в этой удаленной ветке.
Дерик,
После того, как перебазирование будет выполнено, вам нужно отправить изменения с помощью -foption. Когда вы переписываете историю, требуется сильный толчок.
Opster Elasticsearch Ninja