У чому різниця між 'git remote update', 'git fetch' і 'git pull'?


80

Зараз я починаю грати з Git, і я трохи розгублений. Для мене, схоже, існує багато варіантів зробити те саме. Наразі моє питання полягає в тому, в чому різниця між командами нижче:

  • віддалене оновлення git -
  • git fetch
  • git pull

Також який із них більше підходить для оновлення локальної копії віддаленого відділення?



Відповіді:


101

git remote update оновить усі ваші гілки, встановлені для відстеження віддалених, але не об'єднає жодних змін у.

git fetch оновить лише ту гілку, у якій ви перебуваєте, але не об’єднає жодних змін у.

git pullоновить та об’єднає будь-які віддалені зміни поточної гілки, на якій ви перебуваєте. Це буде той, який ви використовуєте для оновлення локальної гілки.


6
git fetchоновить інші гілки, якщо хочете. Спробуйтеgit fetch --all
Arafangion

7
Чи знаєте ви, що ви можете насправді зробити злиття вперед із fetch за допомогою refspecs ?: git fetch origin master:master. Це працює лише в тому випадку, якщо ви ще не masterзареєструвались, оскільки Git повинен перемістити вказівник гілки і не робитиме цього, якщо ви зараз перебуваєте у гілці.

8
"get fetch", здається, отримує всі гілки, коли я це роблю, навіть не використовуючи перемикач --all. (Git для Windows 2.10.0.1)
Саймон П Стівенс

15
Ця відповідь має кілька помилок. В основному вони виникають із сплутування віддалених гілок відстеження зі звичайними гілками, що є великою помилкою. git fetchне оновлює "гілку, на якій ви перебуваєте". Але воно оновлює всі гілки віддаленого відстеження для віддаленого originабо будь-якого іншого віддаленого відділення відстеження для поточного віддаленого.
Колін Д Беннетт,

19
Також див. ДУЖЕ повну відповідь у stackoverflow.com/a/17512004/994153, де описується, як git fetch --allне існувало одночасно, то git remote updateщо кориснішого. Тепер, що --allбуло додано git fetch, git remote updateнасправді не потрібно.
Колін Д Беннетт,

-7

Не впевнений щодо віддаленого оновлення git, але git pull - це отримання git, за яким автоматично відбувається злиття git ...

Це частково дублікат. Перевірка: Яка різниця між 'git pull' та 'git fetch'?

Крім того, якщо це щось для вас означає, я ніколи не використовував віддалене оновлення git, ані fgit fetch. Ви можете чудово справлятися з витягуванням, фіксацією та натисканням.

Сподіваюся, це допоможе ..


1
git fetchмає своє місце ... іноді вас турбує лише те, скільки філій обрізав ваш менеджер; іноді вам потрібні лише оновлення з тієї гілки, в якій ви перебуваєте.
Макото

Думаю, це має сенс =)
LucasA

2
Я майже ніколи не використовую git pull, мені завжди подобається переглядати будь-які зміни, що передують за течією, перш ніж об'єднувати їх, тому я в основному використовую git fetch.

Зазвичай ви ще не хочете об'єднувати свою локальну незавершену гілку для освоєння, тому краще git remote updateі git rebaseдоки ваша робота не буде готова до об'єднання. В іншому випадку ви просто отримаєте кілька марних комітів злиття в історії.
user2061057
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.