Поиск…


Вступление

В отличие от нажатия Git, где ваши локальные изменения отправляются на сервер центрального репозитория, потянув с помощью Git, текущий код на сервере и «вытаскивает» его из сервера хранилища на ваш локальный компьютер. В этом разделе описывается процесс вытягивания кода из репозитория с использованием Git, а также ситуаций, которые могут возникнуть при переносе кода в локальную копию.

Синтаксис

  • git pull [опции [<репозиторий> [<refspec> ...]]

параметры

параметры подробности
--quiet Нет текстового вывода
-q сокращение для --quiet
--verbose подробный вывод текста. Передано для извлечения и объединения / переупорядочения команд соответственно.
-v стенография для --verbose
--[no-]recurse-submodules[=yes | on-demand | no] Получить новые коммиты для подмодулей? (Не то, чтобы это не вытягивание / проверка)

замечания

git pull запускает git fetch с заданными параметрами и вызывает git merge чтобы объединить полученные ветви ветви в текущую ветку.

Обновление с локальными изменениями

Когда локальные изменения присутствуют, команда git pull отменяет отчетность:

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

Чтобы обновить (например, обновление svn с помощью subversion), вы можете запустить:

git stash
git pull --rebase 
git stash pop

Удобным способом может быть определение псевдонима с использованием:

2,9
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
2,9
git config --global alias.up 'pull --rebase --autostash'

Затем вы можете просто использовать:

git up

Вытянуть код из удаленного

git pull

Вытянуть, перезаписать локальный

git fetch
git reset --hard origin/master

Остерегайтесь: в то время как reset --hard сбрасывается с помощью reset --hard может быть восстановлена ​​с использованием reflog и reset , незафиксированные изменения удаляются навсегда.

Измените origin и master на удаленный и ветвь, которые вы хотите принудительно вывести, соответственно, если они названы по-разному.

Сохранение линейной истории при вытягивании

Сбрасывание при вытягивании

Если вы извлекаете новые коммиты из удаленного репозитория, и у вас есть локальные изменения в текущей ветви, тогда git автоматически объединит удалённую версию и вашу версию. Если вы хотите уменьшить количество слияний в своем филиале, вы можете сказать git, чтобы переустановить ваши коммиты на удаленной версии ветки.

git pull --rebase

Поведение по умолчанию

Чтобы сделать это по умолчанию для вновь созданных ветвей, введите следующую команду:

git config branch.autosetuprebase always

Чтобы изменить поведение существующей ветки, используйте следующую команду:

git config branch.BRANCH_NAME.rebase true

А также

git pull --no-rebase

Выполнять нормальное слияние.


Проверьте, есть ли возможность быстрой пересылки

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

git pull --ff-only

При этом будет отображаться ошибка, когда локальная ветка не является быстрой переадресацией, и ее необходимо либо переустановить, либо объединить с восходящим потоком.

Потяните, «разрешение отклонено»

Некоторые проблемы могут возникнуть, если папка .git имеет неправильное разрешение. Устранить эту проблему, установив владельца полной папки .git . Иногда бывает, что другой пользователь тянет и меняет права на .git папку или файлы.

Решить проблему:

chown -R youruser:yourgroup .git/

Вытягивание изменений в локальный репозиторий

Простое натяжение

Когда вы работаете с удаленным репозиторием (например, GitHub) с кем-то другим, вы в какой-то момент захотите поделиться своими изменениями с ними. Как только они переместили свои изменения в удаленный репозиторий, вы можете получить эти изменения, потянув из этого репозитория.

git pull

Сделаю это, в большинстве случаев.


Потяните с другого пульта или ветви

Вы можете тянуть изменения с другого удаленного или ветви, указав их имена

git pull origin feature-A

Вытащить feature-A ветки feature-A origin формы в вашу локальную ветку. Обратите внимание, что вы можете напрямую указывать URL вместо удаленного имени и имя объекта, например, SHA вместо имени филиала.


Ручная тяга

Чтобы имитировать поведение git pull, вы можете использовать git fetch затем git merge

git fetch origin # retrieve objects and update refs from origin
git merge origin/feature-A # actually perform the merge

Это может дать вам больше контроля и позволяет вам проверять удаленную ветвь перед ее объединением. Действительно, после извлечения вы можете видеть удаленные ветви с git branch -a и проверить их с помощью

git checkout -b local-branch-name origin/feature-A # checkout the remote branch
# inspect the branch, make commits, squash, ammend or whatever
git checkout merging-branches # moving to the destination branch
git merge local-branch-name # performing the merge

Это может быть очень удобно при обработке запросов на загрузку.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow