Sobes.tech
Junior — Middle

Πώς διακρίνουμε τις εντολές git rebase και git merge και ποιες είναι οι βασικές διαφορές τους;

sobes.tech AI

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

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

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

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

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

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

Παράδειγμα:

# merge
git checkout feature
git merge main

# rebase
git checkout feature
git rebase main

Στην πρώτη περίπτωση, θα εμφανιστεί ένα commit συγχώνευσης, στη δεύτερη, τα commits σου θα "μετακινηθούν" στην κορυφή του main.