Как я могу поддерживать ветку в актуальном состоянии с помощью мастера с помощью git?

126

У меня есть исправление ошибки в моем мастере, и я также хочу, чтобы моя ветка исправила эту ошибку. Какую gitкоманду использовать?

Ник Хаббард
источник

Ответы:

172

Предполагая, что вы в порядке с внесением всех изменений в мастер, вам нужно:

git checkout <my branch>

переключить рабочее дерево на свою ветку; затем:

git merge master

объединить все изменения в мастере с вашими.

Джон Доти
источник
5
И это просто добавляет изменения из моего мастера в мою ветку и оставляет мастера в покое, верно?
Ник Хаббард
3
@Nic - это принесет все коммиты от мастера, а не только исправление ошибки. Будьте уверены, хотите ли вы этого.
manojlds
12
@Nic - Верно, это не изменяет master.
Джон Доти
16
Было бы неплохо порекомендовать начальный "git checkout master; git pull", чтобы убедиться, что локальная главная ветка актуальна. Обычно очевидно, но ...
MikeW
В качестве ярлыка для основной проверки / слияния, можете ли вы просто выполнить «git pull origin master», чтобы вытащить мастер / слияние сервера в локальную проверенную ветку?
user1172173
66

Если ваша ветка является только локальной и не была отправлена ​​на сервер, используйте

git rebase master

В противном случае используйте

git merge master
Четан
источник
18
Потому что он изменяет историю фиксации, и вы не хотите отправлять измененную историю поиска на сервер.
Chetan
1
Если вы используете репозиторий svn в качестве удаленного репозитория - через - тогда git svnлучше всего git rebase masterбудет вести линейную историю, что понимает svn.
alondono
15

Вы можете использовать вишневый выбор, чтобы получить конкретную фиксацию исправления ошибки.

$ git checkout branch
$ git cherry-pick bugfix
manojlds
источник
будет ли выбор вишни работать только в том случае, если исправление ошибок было веткой, которая была снова объединена с мастером?
Прасит Говин
1
Вы можете выбрать вишню, но затем после слияния ветки с мастером (когда ветка будет готова) у вас будет фиксация с исправлением ошибок дважды в истории.
Готье
0

Если вы просто хотите, чтобы исправление ошибки было интегрировано в ветку, git cherry-pickсоответствующий коммит (и).

Алан Хаггай Алави
источник