Оригінальна публікація: Git Fetch vs Pull: What's the Difference Between the Git Fetch and Git Pull Commands?

Git pull та fetch — це дві команди, які часто використовуються користувачами Git. Розглянемо між ними різницю.

Для контексту варто пам’ятати, що ми, ймовірно, працюємо в клоні репозиторію. Що таке клон? Це дублікат іншого репозиторію. По суті, це отримання власної копії чужого початкового коду.

Проте, щоб ваш клон був оновлений до всіх змін, які могли бути застосовані в оригіналі, вам потрібно переносити їх до свого клону.

Ось тут і з’являються fetch та pull.

git fetch — це команда, яка повідомляє вашому локальному git про останню інформацію метаданих оригіналу (але не передає жодного файлу. Це більше схоже на перевірку того, чи є нові зміни).

git pull робить це ТА переносить (копіює) ці зміни з віддаленого репозиторію.

Наприклад:

git pull origin ankur bugfix

Висновок: пам’ятайте, що на вашій робочій станції зазвичай є щонайменше три копії проєкту:

  • Перша копія — це ваш власний репозиторій з власною історією комітів (так би мовити, вже збережена).
  • Друга копія — це ваша робоча копія, де ви редагуєте та створюєте (ще не комічена до вашого репозиторію).
  • Третя копія — це ваша локальна «кешована» копія віддаленого репозиторію (ймовірно, оригінал, з якого ви клонували свій).

Ви можете використовувати git fetch, щоб знати які зміни були зроблені у віддаленому репозиторію/гілці з моменту останнього внеску. Це корисно робити перед самим виконанням внеску, який може змінити файли у вашій поточній гілці та робочій копії (і потенційно втратити ваші зміни тощо).

git fetch    
git diff ...origin