Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ των εντολών pull και fetch στο Git;

sobes.tech AI

Απάντηση από AI

Το git fetch κατεβάζει τις αλλαγές από ένα απομακρυσμένο αποθετήριο, αλλά δεν τις εφαρμόζει στο τρέχον κλάδο. Το git pull εκτελεί ένα git fetch, και στη συνέχεια συγχωνεύει αυτόματα (merge) τις ληφθείσες αλλαγές με τον τρέχοντα κλάδο.

Βασικές διαφορές:

Εντολή Ενέργεια Επιρροή στο αντίγραφο εργασίας / κλάδο
git fetch Κατεβάζει αντικείμενα (commit, αρχεία) Δεν αλλάζει το αντίγραφο εργασίας ή τον τρέχοντα κλάδο
git pull Κατεβάζει αντικείμενα και συγχωνεύει αλλαγές Ενημερώνει τον τρέχοντα κλάδο και το αντίγραφο εργασίας

Παραδείγματα χρήσης:

Για να δείτε απλώς τι έχει αλλάξει στον απομακρυσμένο διακομιστή:

git fetch origin

(Μπορείτε να ελέγξετε τις αλλαγές με git log origin/<κλάδο>)

Για να λάβετε τις αλλαγές και να τις εφαρμόσετε αυτόματα στον τρέχοντα κλάδο:

git pull origin main # για παράδειγμα

Το git pull είναι ουσιαστικά ισοδύναμο με την εκτέλεση διαδοχικά των git fetch και git merge ή git rebase (ανάλογα με τις ρυθμίσεις).

# Ισοδύναμο με git pull
git fetch origin
git merge origin/main # αν ο τρέχων κλάδος είναι main και χρησιμοποιείτε στρατηγική συγχώνευσης

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