Git merge after fetch - как именно?
Я читал из разных источников, что обычно лучше получить выбор, а не просто тянуть, поскольку это позволяет более тонкое управление. Тем не менее, мне еще предстоит найти, как это сделать. Пример:
Было небольшое изменение, внесенное в какой-то код в одном из моих ветвей главного хранилища GitHub. Я смог получить его, но я не знаю, как на самом деле объединить различия с моей локальной ветвью мастера. git branch
перечислены все локальные ветки, которые у меня есть, но ничего не указывает на что-либо, чтобы слиться с.
Итак, это что-то вроде git merge master
или git merge origin/master
? Что мне не хватает?
Ответы
Ответ 1
git merge origin/master
должен работать. Поскольку master
обычно является ветвью отслеживания, вы также можете сделать git pull
из этой ветки, и она сделает выборку и слияние для вас.
Если у вас есть локальные изменения на master
, которые не отражаются на origin
, вы можете захотеть git rebase origin/master
убедиться, что ваши коммиты "сверху".
Ответ 2
Я обычно делаю это:
git merge --ff-only @{u}
Что говорит: "Только ускоренное слияние из ветки отслеживания восходящего потока". Это хорошо, потому что, если он терпит неудачу, тогда я знаю, что я представил что-то на master
, которое не находится вверх по течению. У меня есть aliased для ff
, просто чтобы было легче набрать.
Если есть изменения, и вы просто хотите их объединить, вы можете сделать:
git merge @{u}
который будет сливаться в восходящей ветке. Однако, если вы хотите получить более чистую историю (и избегаете "Объединение" происхождение/мастер "в" мастер ", то вы можете вместо этого подумать о переустановке:
git rebase @{u}
Конечно, вы можете origin/master
вместо @{u}
в любом из этих примеров.
Ответ 3
Команда
git pull $some_url
эквивалентно
git fetch $some_url
git merge FETCH_HEAD
Более подробную информацию см. в git -pull (1) man, особенно первые два абзаца описания.