Оновлення локального сховища зі змінами зі сховища GitHub


567

У мене проект перевіряється локально від GitHub, і з цього віддаленого сховища в ньому були внесені зміни. Яка правильна команда оновити свою локальну копію з останніми змінами?


26
Варто зазначити, що github створив набір дуже інформативних та корисних посібників із використання git та github. Я вважав їх безцінними, коли я вперше перейшов до git. help.github.com
Марк Embling

Відповіді:


791

Мабуть:

git pull origin master

28
Він скаржився: "Ви попросили витягнути з віддаленого" походження ", але не вказали гілку. Оскільки це не віддалений налаштований за замовчуванням для вашої поточної гілки, ви повинні вказати гілку в командному рядку." Тому я спробував "$ git pull master master", і це спрацювало чудово.
Хуан Ланус

8
git pull origin master
Анджей Реманн

1
Я видалив деякі файли, і це не приносить їх знову, будь-яка ідея?
Сила Водолія

1
чи ми робимо git-фільтр перед запуском цього? щоразу, коли я запускаю цю команду, я закінчую 18347213846 модифікованими файлами, яких я навіть не торкаюся !!!
Оркун Озен

5
Щойно я навчився важкого шляху, що, якщо витягнути нову гілку віддаленого сховища, не створюється гілка цього імені локально, а натомість тягне цю віддалену гілку в ту місцеву гілку, яку потрібно перевірити. Я не впевнений, як скасувати цей короткий вирив і повторне клонування сховища. У будь-якому випадку, здається, що локальна гілка не залежить від віддаленої гілки, і завжди слід переконатися, що ти знаходишся у передбачуваній місцевій гілці, перш ніж тягнути.
Джо Лапп

87

Це має працювати для кожного репо за замовчуванням:

git pull origin master

Якщо ваша гілка за замовчуванням відрізняється від master, вам потрібно буде вказати назву гілки:

git pull origin my_default_branch_name

2
Не зовсім. фатально: Не вдалося знайти віддаленого майстра по ref
Victor Eijkhout

1
@Eijkhout probablt у вашому випадку repo немає головного відділення, а якась інша гілка встановлена ​​за замовчуванням
Анджей Реманн

62
git fetch [remotename]

Однак вам потрібно буде об'єднати будь-які зміни у ваші місцеві відділення. Якщо ви знаходитесь на гілці, яка відстежує віддалену гілку в Github, значить

git pull

спочатку зробить виймання, а потім об'єднається у відстежувану гілку


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"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.