Sobes.tech
Junior — Middle

Εξηγήστε τη λειτουργία της εντολής rebase στο σύστημα ελέγχου εκδόσεων Git και ποια είναι η διαφορά της από το merge.

sobes.tech AI

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

Η εντολή git rebase χρησιμοποιείται για τη μετακίνηση ή την 'ξαναγραφή' μιας σειράς commits σε μια νέα βάση, δηλαδή σε ένα άλλο commit. Επιτρέπει να πάρεις αλλαγές από ένα κλαδί και να τα 'παίξεις' πάνω σε ένα άλλο κλαδί, δημιουργώντας μια γραμμική ιστορία χωρίς επιπλέον commits συγχώνευσης.

Διαφορές με το git merge:

  • git merge ενώνει δύο κλαδιά, δημιουργώντας ένα νέο commit συγχώνευσης που διατηρεί την ιστορία και των δύο κλαδιών με διακλαδώσεις.
  • git rebase μετακινεί τα commits ενός κλαδιού στην κορυφή ενός άλλου, ξαναγράφοντας την ιστορία και κάνοντάς την γραμμική.

Παράδειγμα:

Αν έχεις ένα κλαδί feature, που έχει δημιουργηθεί από το master, και το master έχει ενημερωθεί, τότε:

  • git merge master στο feature θα δημιουργήσει ένα commit συγχώνευσης που ενώνει τις αλλαγές.
  • git rebase master στο feature θα μεταφέρει τα commits σου πάνω στην τρέχουσα κατάσταση του master, σαν να ξεκίνησες την εργασία από την τελευταία κατάσταση του master.

Το rebase είναι χρήσιμο για τη διατήρηση καθαρής ιστορίας, αλλά απαιτεί προσοχή όταν εργάζεσαι με δημόσια κλαδιά, ώστε να μην ξαναγράψεις την κοινή ιστορία.