Junior
Τι είναι το cherry-pick;
sobes.tech AI
Απάντηση από AI
Το git cherry-pick χρησιμοποιείται για τη μεταφορά ενός ή περισσότερων commits από ένα κλαδί σε ένα άλλο.
Αρχή λειτουργίας:
- Επιλέγει το συγκεκριμένο commit (ή commits) στο αρχικό κλαδί.
- Εφαρμόζει τις αλλαγές που περιέχονται σε αυτά τα commits στο τρέχον ενεργό κλαδί.
- Δημιουργεί νέα commits στο τρέχον κλαδί με τις ίδιες αλλαγές και μηνύματα με τα αρχικά.
Πότε να το χρησιμοποιήσετε:
- Μεταφορά μιας συγκεκριμένης διόρθωσης σφάλματος από ένα κλαδί (π.χ. παραγωγή) σε ένα άλλο (π.χ. ανάπτυξη), χωρίς να επηρεάσετε άλλες αλλαγές.
- Εφαρμογή αλλαγών από ένα feature-branch σε ένα άλλο, χωρίς να τα συγχωνεύσετε πλήρως.
- Ακύρωση λανθασμένων συγχωνεύσεων διατηρώντας τα ξεχωριστά commits.
Διαφορές με merge και rebase:
merge: Συνενώνει ολόκληρη την ιστορία αλλαγών από ένα κλαδί σε ένα άλλο.rebase: Ξαναγράφει την ιστορία των commits, τα μετακινεί σε μια νέα βάση.cherry-pick: Εφαρμόζει μόνο επιλεγμένα commits, δημιουργώντας νέα και διατηρώντας την αρχική ιστορία.
Βασική εντολή:
# Μεταφορά ενός commit
git cherry-pick <commit-hash>
# Μεταφορά πολλών commits (με τη σειρά που αναφέρονται)
git cherry-pick <commit-hash-1> <commit-hash-2> ...
Παράδειγμα:
Ας υποθέσουμε ότι υπάρχουν δύο κλαδιά: main και feature. Στο feature έγινε ένα commit fix-typo. Πρέπει να μεταφερθεί αυτό το commit στο main.
# Μεταβείτε στο στόχο κλαδί
git checkout main
# Εκτελέστε cherry-pick χρησιμοποιώντας το hash του commit από το feature
git cherry-pick 7f3bca2 # Παράδειγμα hash
Μετά την εκτέλεση της εντολής, στο main θα εμφανιστεί ένα νέο commit με τις ίδιες αλλαγές με το fix-typo, αλλά με διαφορετικό hash.