Відмінності між master git origin origin і git pull origin / master


283

У чому різниця між git pull origin masterі git pull origin/master?


1
Шлях майже все це охоплює, але невідповідь полягає в тому, що ви ніколи не повинні цього робити git pull origin/master. Якщо ви хочете об'єднати віддалену гілку [локально зберігається] origin/master, просто скористайтеся git merge origin/master.
Каскабель

3
@Jefromi: Чи можете ви пояснити, чому завжди краще робити git merge порівняно з git pull?
Рейчел

16
git pullзасоби, git fetchза якими слідує git merge. Він отримує вміст із віддаленого пристрою, а потім об'єднує його у вашу поточну гілку. Але origin/masterце місцева гілка (відстеження віддаленої гілки). Якщо ви хочете об'єднати його, вам нічого не потрібно робити. Помилково сказати, git pull origin/masterколи ви насправді не отримуєте з дистанції.
Каскабель

Дякую Jefromi за корисну інформацію. Це дійсно допомагає зрозуміти досить легко не так просту концепцію.
Рейчел

Для тих, хто читає це і все ще плутається, origin/masterце локально зберігається гілка, яка кешує головну гілку на віддаленому джерелі походження.
iheanyi

Відповіді:


355

git pull origin masterбуде витягувати зміни з originвіддаленого, masterвідділення та об'єднувати їх у локальну гілку, у яку ви перевірили.

git pull origin/masterбуде витягувати зміни з локально збереженої гілки origin/masterта об'єднувати її з локальною вивіреною гілкою. origin/masterГалузь по суті «збережена копія» , що в останній раз витягнув зorigin , тому він називається віддалений філія в мерзотника жаргону. Це може бути дещо заплутано.

Ви можете побачити, з якими гілками доступні, git branchта git branch -rпобачити "віддалені гілки".


1
у випадку, якщо git pull origin masterвона завжди буде зливатися з основною гілкою, давайте скажемо, що я перебуваю на іншій гілці мого репо, і тоді я виконую вище команду, чи оновить мою поточну гілку за допомогою віддалених змін походження чи мою головну гілку зі змінами?
Рейчел

4
@calmh: git merge(і тому git pull) завжди зливається в поточну гілку. Щоб об'єднатись із чимось іншим, ніж ваша поточна галузь, просто спочатку перевірте це.
Каскабель

2
гм .. я не бачу, наскільки "походження / господар" відрізняється від "майстра походження"; вони обоє головна галузь за походженням. Чи можете ви насправді навести приклад того, коли вони були б іншими?
hasen

69
git pull origin/masterможливо, це була дійсна команда, коли це було написано, але в наш час (git 1.7.10.3) вона не спрацьовує fatal: 'origin/master' does not appear to be a git repository(як слід - тягнути завжди для витягування з віддалених).
user1338062

3
Чому git настільки заплутаний? Отже, у нас повністю 4 сховища, правда? Є (1) віддалене сховище, (2) локальне сховище, (3) поетапне сховище, (4) локальне-віддалене ака походження / мастер? Чому Git взагалі має сховище №4?
Mugen

3

git pull origin masterотримає всі зміни з головного відділення віддаленого пристрою та об'єднає їх у ваш локальний. Ми, як правило, не використовуємо git pull origin / master. Ми можемо зробити те ж саме git merge origin/master. похідна головна гілка у вашу локальну філію. У моєму випадку викидається git pull origin/masterпомилка.


1

git pull= git fetch+git merge origin/branch

git pullі git pull origin branchвідрізняються лише тим, що остання буде "оновлювати" походження / гілку, а не все походження / *, як git pullце робиться.

git pull origin/branchпросто не вийде, оскільки він намагається зробити git fetch origin/branchнедійсний.

Питання, пов'язані з питанням: git fetch + git merge origin / master vs git pull origin / master

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