Git Fetch vs Pull: qual è la differenza tra i comandi Git Fetch e Git Pull?

Git pulle fetchsono due comandi che vengono usati regolarmente dagli utenti di Git. Vediamo la differenza tra i due comandi.

Per motivi di contesto, vale la pena ricordare che probabilmente stiamo lavorando in un repository clone. Cos'è un clone? È semplicemente un duplicato di un altro repository. Fondamentalmente si tratta di ottenere la tua copia del codice sorgente di qualcun altro.

Detto questo, per mantenere aggiornato il tuo clone con qualunque modifica possa essere stata applicata all'originale, dovrai portarli al tuo clone.

Ecco dove fetched pullentra in gioco.

git fetch è il comando che dice al tuo git locale di recuperare le ultime informazioni sui metadati dall'originale (ma non esegue alcun trasferimento di file. È più come controllare se ci sono modifiche disponibili).

git pull d'altra parte lo fa AND porta (copia) quei cambiamenti dal repository remoto.

Per esempio:

git pull origin ankur bugfix

Il punto è tenere presente che generalmente ci sono almeno tre copie di un progetto sulla tua workstation.

  • Una copia è il tuo repository con la tua cronologia dei commit (quella già salvata, per così dire).
  • La seconda copia è la tua copia di lavoro in cui stai modificando e costruendo (non ancora impegnata nel tuo repository).
  • La terza copia è la tua copia locale "memorizzata nella cache" di un repository remoto (probabilmente l'originale da cui hai clonato il tuo).

È possibile utilizzare git fetchper conoscere le modifiche apportate nel repository / ramo remoto dall'ultimo pull. Ciò è utile per consentire il controllo prima di eseguire un pull effettivo, che potrebbe modificare i file nel ramo corrente e nella copia di lavoro (e potenzialmente perdere le modifiche, ecc.).

git fetch git diff ...origin