Обновление локального репозитория с изменениями из репозитория GitHub

567

Я проверил проект локально с GitHub, и с тех пор в этом удаленном хранилище были внесены изменения. Какая правильная команда для обновления моей локальной копии с последними изменениями?

Том
источник
26
Стоит отметить, что github выпустил набор очень информативных и полезных руководств по использованию git и github. Я нашел их неоценимыми, когда я впервые сделал шаг в Git. help.github.com
Марк Эмблинг

Ответы:

791

Вероятно:

git pull origin master
Джеймс Хили
источник
28
Он жаловался: «Вы попросили извлечь из удаленного« источника », но не указали ветку. Поскольку это не настроенный по умолчанию пульт для вашей текущей ветки, вы должны указать ветку в командной строке». Поэтому я попробовал "$ git pull origin master", и он работал нормально.
Хуан Ланус
8
мастер происхождения git pull
Анджей Реманн
1
Я удалил некоторые файлы, и это не приносит их снова, любая идея?
Водолей Power
1
мы делаем git commit перед запуском этого? каждый раз, когда я запускаю эту команду, я получаю 18347213846 измененных файлов, которые я даже не трогал !!!
Оркун Озен
5
Я только что понял, как при извлечении новой ветви удаленного репозитория ветвь с таким именем не создается локально, а вместо этого перетаскивает эту удаленную ветвь в любую локальную ветвь, которая будет проверена. Я не уверен, как отменить этот недостаток канав и повторного клонирования хранилища. В любом случае, кажется, что локальная ветвь независима от удаленной ветки, и всегда следует убедиться, что вы находитесь в намеченной локальной ветке перед извлечением.
Джо Лапп
87

Это должно работать для каждого репо по умолчанию:

git pull origin master

Если ваша ветвь по умолчанию отличается от master, вам нужно указать имя ветки:

git pull origin my_default_branch_name
Анджей Реманн
источник
2
На самом деле, нет. Фатальный: Не удалось найти удаленного
рефериста
1
@Eijkhout probablt В вашем случае репо нет основной ветви, а некоторые другие ветви установлены по умолчанию
Анджей Реманн
62
git fetch [remotename]

Однако вам нужно объединить любые изменения в ваши местные филиалы. Если вы находитесь на ветке, которая отслеживает удаленную ветку на Github, то

git pull

сначала сделает выборку, а затем слит в отслеживаемую ветку

Gareth
источник
5
Если вы используете git fetchметод, вы также можете получить теги git fetch -t. Если вы удовлетворены изменениями ( git log HEAD..FETCH_HEAD), вы можете объединить их с git merge FETCH_HEAD.
Брэд Гриссом
16

Этот вопрос носит очень общий характер, и я сделаю несколько предположений, чтобы немного его упростить. Мы предполагаем, что вы хотите обновить свою masterветку.

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

git pull origin master

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

git pull --rebase origin master

git pull --rebase будет работать, даже если вы не внесли изменения и, вероятно, ваш лучший звонок.

Махавир Чхасатия
источник
1
Перебазирование и опасность перебазирования: atlassian.com/git/tutorials/rewriting-history/git-rebase . Параграфы 2 и 3 «Понимания опасности перебазирования» действительно заставляют меня пропустить набор команд SVN.
WillC
9

С уже установленным исходным мастером вам просто нужно использовать следующую команду -

git pull "https://github.com/yourUserName/yourRepo.git"
Шайлендра
источник