git fetch не обновляет мой локальный репозиторий - PullRequest
20 голосов
/ 23 марта 2012

Что я хочу:

Обновите все новости с сервера в моем локальном репозитории во всех ветвях, но не объединяйте никакие ветки (просто присоединяйтесь к строкам истории).

Я пытаюсь эту команду

git fetch --force --progress --verbose  name@host:/path/to/repository.git 

Я думал, что он будет работать нормально, потому что он показывает:

From host:/path/to/repository
  * branch            HEAD       -> FETCH_HEAD

Но что означает этот вывод? Если я вижу журнал, он не был обновлен. Если я сделаю клон с сервера, все новые коммиты будут там. Итак ... Команда не работает. Затем я пытаюсь с веткой, которая существует на сервере, но не в моем локальном хранилище

git fetch --force --progress --verbose  name@host:/path/to/repository.git my_branch

Результат:

From host:/path/to/repository
  * branch            my_branch       -> FETCH_HEAD

И любой успех ... Даже если я не знаю всех веток и моя ветвь была обновлена, я хочу получить эти изменения и увидеть в моем журнале.

Есть идеи, как это работает?

Ответы [ 3 ]

29 голосов
/ 23 марта 2012

При получении вы получаете удаленные ветви, но вам все равно нужно объединить изменения из удаленной ветви в вашу локальную ветку, чтобы увидеть эти изменения.

После выборки попробуйте следующее:

git log origin/yourbranchname | head
git log yourbranchname | head

Видите ли вы разницу?

Теперь выполните:

git checkout origin/yourbranchname -b newbranchname
git log newbranchname

Вы должны увидеть удаленные изменения в новом имени.

Вы также можете объединить эти измененияваша ветка с

git checkout yourbranchname
git merge origin/yourbranchname
18 голосов
/ 05 января 2015

Я сталкивался с этой проблемой раньше, основная причина в том, что вы не настроили remote.origin.fetch в вашей локальной конфигурации git.

используйте приведенную ниже команду для решения вашей проблемы:

git config --local --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*

после этого запустите 'git fetch origin', я думаю, вы получите ожидаемый результат.

10 голосов
/ 23 марта 2012

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

Великолепный ответ SO: https://stackoverflow.com/a/292359/102371

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...