Почему мой локальный филиал показывает (локально устаревший) несмотря на выполнение git fetch? - PullRequest
0 голосов
/ 04 октября 2019

Мой товарищ по команде обновил свою ветку feature1 на пульте, пока я работал над feature2.

Теперь, когда я делаю $ git remote show origin, он показывает -

Local refs configured for 'git push':

feature1 pushes to feature1 (local out of date)

В настоящее время я проверен на ветке feature2, и я попробовал все команды ниже, но состояние feature1 не меняется на (up to date). (Все команды выполняются без ошибок)

$ git fetch origin

$ git fetch --all

$ git fetch origin feature2

Почему это происходит? Чего мне не хватает?

Ответы [ 2 ]

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

После использования git fetch для получения новых коммитов из какого-либо другого Git, вы должны выбрать, как комбинировать эти новые коммиты с любым из ваших собственных существующих коммитов.

Существует два основных способа комбинировать коммиты:

  • git merge
  • git rebase

В некоторых случаях это очень разные действия. В других случаях, включая, в частности, случай, когда все ваших существующих коммитов были изначально получены из этого другого Git, и вы никогда не делаете никаких своих собственных коммитов, а человек, управляющий другим Git, ведет себя хорошо- они делают одно и то же, так что не имеет значения, какую вы делаете (если только вторая команда не сработает; см. Ниже).

Мой собственный процесс обычно таков: запустите git fetch, проверьте, что произошло,затем выберите, какой из git merge или git rebase я хочу сделать, если я еще хочу сделать какой-либо из них. Затем я делаю вторую команду, которую я хотел бы сделать, основываясь на результатах этой проверки, или я полностью воздерживаюсь от результатов этой проверки.

Если вы уверены в том, какую вторую команду выЕсли вы хотите использовать, вы можете использовать git pull, который запускает git fetch, а затем запускает одну из этих двух других команд Git. Вы заранее выбираете, прежде чем посмотреть, что принесет git fetch, , какую другую команду Git запустить. Вторая команда по умолчанию - git merge, поэтому, если вы заранее уверены, что хотите набрать git fetch, а затем git merge, вы можете запустить git pull. Если вы заранее уверены, что хотите запустить git rebase секунду, вы можете запустить git pull --rebase.

Обратите внимание, что оба git merge и git rebase могут потерпеть неудачу и оставлю вас в беспорядке навести порядок. Если вы запускаете git pull и его вторая команда не выполняется, вы все еще находитесь в середине любой второй команды, которую вы выбрали для запуска git pull. Вам все еще нужно навести порядок. Вы можете подождать, пока это действительно произойдет, чтобы узнать , как очистить его, но помните, что способ его очистки зависит от , какую вторую команду вы выбрали! Мне нравится избегать git pull, чтобы я знал, какую вторую команду я использовал, благодаря тому, что I набрал ее.: -)

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

git fetch просто загрузите объекты и ссылки из другого репозитория. Чтобы внести изменения в вашу ветку, вы должны выполнить git merge .

. Чтобы сделать обе вещи за один шаг, вы можете использовать git pull

* 1010. * В вашем случае:
git merge origin/feature2
...