Git Fetch vs Pull: Ποια είναι η διαφορά μεταξύ των εντολών Git Fetch και Git Pull;

Git pullκαι fetchείναι δύο εντολές που χρησιμοποιούνται τακτικά από τους χρήστες του Git. Ας δούμε τη διαφορά μεταξύ των δύο εντολών.

Για χάρη του περιεχομένου, αξίζει να θυμόμαστε ότι πιθανότατα δουλεύουμε σε ένα κλώνο repo. Τι είναι ο κλώνος; Είναι απλά ένα αντίγραφο ενός άλλου αποθετηρίου. Βασικά παίρνει το δικό σας αντίγραφο του πηγαίου κώδικα κάποιου άλλου.

Τούτου λεχθέντος, για να ενημερώσετε τον κλώνο σας με οποιεσδήποτε αλλαγές μπορεί να έχουν εφαρμοστεί στο πρωτότυπο, θα πρέπει να τις μεταφέρετε στον κλώνο σας.

Εδώ είναι fetchκαι pullέλα.

git fetch είναι η εντολή που λέει στο τοπικό σας git να ανακτήσει τις τελευταίες πληροφορίες μετα-δεδομένων από το πρωτότυπο (αλλά δεν κάνει μεταφορά αρχείων. Είναι περισσότερο σαν να ελέγχετε αν υπάρχουν διαθέσιμες αλλαγές).

git pull από την άλλη πλευρά, το AND φέρνει (αντιγράψει) αυτές τις αλλαγές από το απομακρυσμένο αποθετήριο.

Για παράδειγμα:

git pull origin ankur bugfix

Το takeaway είναι να θυμάστε ότι γενικά υπάρχουν τουλάχιστον τρία αντίγραφα ενός έργου στο σταθμό εργασίας σας.

  • Ένα αντίγραφο είναι το δικό σας αποθετήριο με το δικό σας ιστορικό δεσμεύσεων (το ήδη αποθηκευμένο, για παράδειγμα).
  • Το δεύτερο αντίγραφο είναι το αντίγραφο εργασίας σας όπου επεξεργάζεστε και δημιουργείτε (δεν έχει δεσμευτεί ακόμη στο repo σας).
  • Το τρίτο αντίγραφο είναι το τοπικό "προσωρινά αποθηκευμένο" αντίγραφο ενός απομακρυσμένου αποθετηρίου (πιθανώς το πρωτότυπο από το οποίο κλωνοποιήσατε το δικό σας).

Μπορείτε να χρησιμοποιήσετε git fetchγια να γνωρίζετε τις αλλαγές που έγιναν στο απομακρυσμένο repo / κλάδο από την τελευταία σας έλξη. Αυτό είναι χρήσιμο για να επιτρέψετε τον έλεγχο πριν κάνετε μια πραγματική έλξη, η οποία θα μπορούσε να αλλάξει αρχεία στον τρέχοντα κλάδο και το αντίγραφο εργασίας σας (και ενδεχομένως να χάσει τις αλλαγές σας, κ.λπ.).

git fetch git diff ...origin