Sobes.tech
Junior

Τι είναι το cherry-pick;

sobes.tech AI

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

Το git cherry-pick χρησιμοποιείται για τη μεταφορά ενός ή περισσότερων commits από ένα κλαδί σε ένα άλλο.

Αρχή λειτουργίας:

  1. Επιλέγει το συγκεκριμένο commit (ή commits) στο αρχικό κλαδί.
  2. Εφαρμόζει τις αλλαγές που περιέχονται σε αυτά τα commits στο τρέχον ενεργό κλαδί.
  3. Δημιουργεί νέα 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.