`Git pull` только объединяет изменения в ветку, в которую зарегестрированы? - PullRequest
1 голос
/ 22 октября 2019

Я недавно выполнил следующие действия в git:

  1. git checkout a
  2. git pull (это скачало некоторый новый код, который был добавлен в другую ветку b)
  3. git merge master
  4. git checkout master
  5. В этот момент я ожидал, что master будет содержать изменения, загруженные в 2), однако их не было. Я снова запустил git pull, который извлек изменения.

Получает ли git pull изменения и объединяет их только с текущей веткой (в которую я извлечен)? Если да, есть ли команда git для слияния загруженных изменений в каждую / определенную ветку?

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Does git pull fetch and merge the changes only into the current branch (which I'm checked out into)?

- Да. Существует возможность использовать опцию --all с командой git pull , но это только обновляет информацию обо всех ветвях. Это не будет тянуть код во всех филиалах.

If yes, is there a git command to merge the downloaded changed into every/specific branches?

- Нет. Чтобы перетащить код в конкретную ветку, вам нужно будет оформить ветку в явном виде, а затемиспользуйте команду git pull .

1 голос
/ 23 октября 2019

Pure git

Документация Git очень ясна в этом.

Включает изменения из удаленного репозитория в текущую ветку. В режиме по умолчанию git pull является сокращением для git fetch, за которым следует git merge FETCH_HEAD.

Точнее, git pull запускает git fetch с заданными параметрами и вызывает git merge, чтобы объединить полученные заголовки веток с текущей веткой,С --rebase он запускает git rebase вместо git merge.

Вы можете выбрать все пульты с --all.

- all

Получите все пульты.

Обратите внимание, что это «выборка», а не «извлечение», «объединение» или «интеграция».


хаба hub-sync

Вы можете попробовать использовать концентратор GitHub . Его команда hub-sync синхронизирует локальные ветви.

Извлекает git-объекты из апстрима и обновляет локальные ветви. Синопсис

hub sync [--color]

  • Если локальная ветвь устарела, перенести ее вперед;
  • Если локальная ветвь содержит невыпущенную работу, предупредитьоб этом;
  • Если ветка кажется объединенной и ее восходящая ветвь была удалена, удалите ее.

Если локальная ветвь не имеет никакой восходящей конфигурации, но имеет одноименное имяветвь на удаленном компьютере, рассматривайте это как восходящую ветвь.

1 голос
/ 22 октября 2019

Git извлекает и объединяет изменения только в текущую ветку (в которую я извлечен)?

Да.

Еслида, есть ли команда git для слияния загруженных изменений в каждую / определенную ветку?

Нет, нет.

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

Пример, предполагающий dev и master ветви как стабильные

git config --global alias.upd8 '!git stash && git checkout master && git pull && git checkout dev && git pull'

тогда, когда вам нужно обновить ваши стабильные локальные ветви, просто

git upd8

(Поскольку команды связаны с &&, bash будет продолжаться, только если код ошибки не будет возвращен,таким образом, это не пойдет дальше, например, текущая ситуация не является «stashable» или если одно из слияний проблематично.)

...