Πώς να χρησιμοποιήσετε τη συγχώνευση GIT

Dec 31, 2024
Programming

Το GIT χρησιμοποιεί υποκαταστήματα για την απομόνωση των αναπτυξιακών ρευμάτων, για να αποτρέψει τη μολυσμένη από τον κλάδο της σταθερής απελευθέρωσης. Η προσφορά εργασίας σε ένα υποκατάστημα στο κύριο ρεύμα σημαίνει συγχώνευση κλάδων. Δείτε πώς το κάνετε.

Τι είναι η συγχώνευση στο Git;
Προετοιμασία για να συγχωνεύσει ένα υποκατάστημα στο Git
Εκτέλεση συγχώνευσης
Εκτελώντας μια γρήγορη συγχώνευση στο Git
Πώς να επιλύσετε τις συγκρούσεις συγχώνευσης στο git
Όλα συγχωνεύονται τελικά

Τι είναι η συγχώνευση στο Git;

Το Git σχεδιάστηκε για να κάνει τη διακλάδωση απλή και γρήγορη. Σε αντίθεση με άλλα συστήματα ελέγχου έκδοσης, η διακλάδωση στο GIT είναι ένα ασήμαντο θέμα. Σχετικά με τα έργα πολλαπλών προγραμματιστών, η διακλάδωση είναι ένα από τα βασικά οργανωτικά εργαλεία της GIT.

Υποκαταστήματα Sandbox Νέες προσπάθειες ανάπτυξης έτσι ώστε ο κώδικας να μπορεί να τροποποιηθεί ή να προστεθεί χωρίς να επηρεάσει τον κώδικα σε άλλους κλάδους, ειδικά στον κύριο ή κύριο υποκατάστημα. Αυτό συνήθως περιέχει τη σταθερή έκδοση της βάσης κώδικα σας.

Η απομόνωση αυτών των αλλαγών από τη σταθερή έκδοση κώδικα σας έχει νόημα. Αλλά αργά ή γρήγορα ο νέος κώδικας θα δοκιμαστεί, θα αναθεωρηθεί και θα είναι καουτσούκ για να μετατραπεί στον κύριο υποκατάστημα. Σε αυτό το σημείο, πρέπει να συγχωνεύσετε το υποκατάστημα σας στο Master Branch.

Στην πραγματικότητα, τα υποκαταστήματα μπορούν να έχουν υπο-κλάδο, ώστε να μπορεί να συγχωνεύετε το υποκατάστημα σας σε κάποιο άλλο υποκατάστημα αντί του κύριου κλάδου. Απλά θυμηθείτε ότι οι συγχωνεύσεις παίρνουν πάντα ένα υποκατάστημα και το συγχωνεύστε σε ένα στόχος υποκατάστημα, ό, τι μπορεί να είναι αυτό το υποκατάστημα. Εάν θέλετε να συγχωνεύσετε το κύριο υποκατάστημα σας σε άλλο υποκατάστημα, μπορείτε να το κάνετε και αυτό.

Όπως και οι περισσότερες ενέργειες στο GIT, εκτελείτε συγχωνεύσεις στο τοπικό αποθετήριο σας και τις ωθήστε στο απομακρυσμένο αποθετήριο σας.

Προετοιμασία για να συγχωνεύσει ένα υποκατάστημα στο Git

Έχουμε ένα μικρό αναπτυξιακό έργο με ένα τοπικό αποθετήριο Git και ένα απομακρυσμένο αποθετήριο Git. Δημιουργήσαμε ένα υποκατάστημα που ονομάζεται "BugFix14" από το υποκατάστημα "Master" και εργάστηκε σε μια λύση σε ένα σφάλμα.

Αυτή η εργασία ολοκληρώνεται και δοκιμάσαμε τον κωδικό μας. Όλα λειτουργούν όπως αναμενόταν. Θέλουμε να μεταφέρουμε αυτές τις αλλαγές στον κύριο υποκατάστημα, έτσι ώστε η λύση μας να είναι μέρος της επόμενης κυκλοφορίας του λογισμικού.

Υπάρχει μια μικρή προετοιμασία που πρέπει να γίνει πριν από την εκτέλεση της συγχώνευσης. Πρέπει να βεβαιωθούμε ότι ο κλάδος -στόχος - στην περίπτωση αυτή το κλάδο "Master" - και το υποκατάστημα που πρόκειται να συγχωνευθούμε σε αυτό είναι και οι δύο ενημερωμένοι.

  • Στο Branch Bugfix14 : Αυτός είναι ο σημερινός κλάδος μας.
  • Το υποκατάστημα σας είναι ενημερωμένο με το "Origin/Bugfix" : Ο κλάδος στο τοπικό μας αποθετήριο έχει το ίδιο ιστορικό δέσμευσης με το υποκατάστημα στο απομακρυσμένο αποθετήριο. Αυτό σημαίνει ότι είναι πανομοιότυπα.
  • Τίποτα για δέσμευση Δεν υπάρχουν αλλαγές στην περιοχή σταδιοποίησης που δεν έχουν δεσμευτεί.
  • καθαρό δέντρο εργασίας : Δεν υπάρχουν ασταμάτητες αλλαγές στον κατάλογο εργασίας.

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

Ελέγχοντας το υποκατάστημα που πρόκειται να συγχωνευθούμε για να απλοποιήσουμε τη διαδικασία συγχώνευσης. Μας επιτρέπει επίσης να το επιβεβαιώσουμε είναι ενημερωμένο. Ας ρίξουμε μια ματιά στο Master Branch.

Παίρνουμε τις ίδιες επιβεβαιώσεις ότι το υποκατάστημα "Master" είναι ενημερωμένο.

ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να επιλέξετε τη ροή εργασίας GIT & amp; Μοντέλο διακλάδωσης που είναι σωστό για την ομάδα σας

Εκτέλεση συγχώνευσης

Το υποκατάστημα "BugFix14" διακλαδίστηκε από το υποκατάστημα "Master". Υπήρξε μια δέσμευση για το υποκατάστημα "Master" μετά τη δημιουργία του κλάδου "bugfix14". Υπήρξαν μερικές δεσμεύσεις στο υποκατάστημα "BugFix14".

Έχουμε βεβαιωθεί ότι τα δύο κλάδους μας είναι ενημερωμένα και έχουμε ελέγξει το υποκατάστημα "Master". Μπορούμε να εκδώσουμε την εντολή για να συγχωνεύσουμε το υποκατάστημα "BugFix14" στο υποκατάστημα "Master".

Η συγχώνευση λαμβάνει χώρα. Το υποκατάστημα "BugFix14" εξακολουθεί να υπάρχει, αλλά τώρα οι αλλαγές που έγιναν σε αυτόν τον κλάδο έχουν συγχωνευθεί στο υποκατάστημα "Master".

Σε αυτήν την περίπτωση η εντολή συγχώνευσης εκτελεί ένα τρισδιάστατη συγχώνευση . Υπάρχουν μόνο δύο κλάδους, αλλά υπάρχουν τρεις δεσμεύσεις. Είναι ο επικεφαλής του κλάδου και μια τρίτη δέσμευση που αντιπροσωπεύει την ίδια τη συγχώνευση.

Για να ενημερώσουμε το απομακρυσμένο αποθετήριο μας, μπορούμε να χρησιμοποιήσουμε το ώθηση εντολή.

Μερικοί άνθρωποι προτιμούν να διαγράφουν πλευρικά κλαδιά μόλις τους συγχωνεύσει. Άλλοι φροντίζουν να τα διατηρήσουν ως αρχείο του πραγματικού ιστορικού ανάπτυξης του έργου.

Εάν θέλετε να διαγράψετε το υποκατάστημα, μπορείτε να το κάνετε χρησιμοποιώντας το υποκατάστημα τζάκι εντολή με το -ρε (Διαγραφή) Επιλογή.

Προς την διαγράψτε το υποκατάστημα Στο απομακρυσμένο αποθετήριο χρησιμοποιήστε αυτήν την εντολή:

Θα έχετε μια γραμμική ιστορία δέσμευσης, αλλά δεν θα είναι η αληθινή ιστορία.

ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να διαγράψετε τα υποκαταστήματα Git σε τοπικά και απομακρυσμένα αποθετήρια

Εκτελώντας μια γρήγορη συγχώνευση στο Git

Εάν δεν έχετε κάνει καμία δέσμευση στο υποκατάστημα "Master", η ιστορία σας θα μοιάζει με αυτό. Θα το φανεί επίσης αν έχετε ανασταλμένος Ο κλάδος ανάπτυξης σας έτσι ώστε να συνδέεται με το τέλος του κλάδου "Master".

Επειδή δεν υπάρχουν δεσμεύσεις στο υποκατάστημα "Master", για να συγχωνεύσουμε το υποκατάστημα "BugFix15", το Git πρέπει να κάνει είναι να δείξει τον δείκτη "Master" Head για την τελευταία δέσμευση του κλάδου "BugFix15".

Το Git θα εκτελέσει μια γρήγορη συγχώνευση όποτε μπορεί . Εάν δεσμεύεται στο υποκατάστημα "Master" σημαίνει ότι δεν είναι δυνατή μια γρήγορη συγχώνευση, το Git θα χρησιμοποιήσει ένα τρισδιάστατη συγχώνευση .

Δεν μπορείτε δύναμη Μια γρήγορη συγχώνευση-μπορεί να μην είναι δυνατόν, τελικά-αλλά μπορείτε να δηλώσετε ότι πρόκειται να είναι γρήγορη συγχώνευση ή τίποτα. Υπάρχει μια επιλογή που δίνει εντολή στο Git να χρησιμοποιήσει μια γρήγορη συγχώνευση, αν μπορεί, αλλά να μην κάνει μια τρισδιάστατη συγχώνευση αν δεν μπορεί. Η επιλογή είναι --φ-μόνο (Μόνο συγχώνευση γρήγορης προώθησης).

Αυτό συγχωνεύει το υποκατάστημα "BugFix15" στο υποκατάστημα "Master", αλλά μόνο αν είναι δυνατή μια συγχώνευση γρήγορης προόδου.

Σε αυτή την περίπτωση, υπήρξαν δεσμεύσεις στο υποκατάστημα "Master", οπότε δεν είναι δυνατή μια γρήγορη συγχώνευση.

Πώς να επιλύσετε τις συγκρούσεις συγχώνευσης στο git

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

Εδώ, έχουμε κάνει αλλαγές σε ένα αρχείο που ονομάζεται "ROT.C" σε ένα υποκατάστημα που ονομάζεται "BugFix17" που θέλουμε να συγχωνευθούμε στο υποκατάστημα "Master". Αλλά το "rot.c" έχει αλλάξει και στο κλάδο "Master".

Όταν προσπαθούμε να το συγχωνεύσουμε, έχουμε μια προειδοποίηση ότι υπάρχουν συγκρούσεις. Το GIT παραθέτει τα συγκρουόμενα αρχεία και μας λέει ότι η συγχώνευση απέτυχε. Θα μπορούσαμε να επιστρέψουμε πλήρως χρησιμοποιώντας το --αμβλώνω επιλογή:

Αλλά η επίλυση των συγχωνεύσεων δεν είναι τόσο τρομακτική όσο ακούγεται. Ο Git έχει κάνει κάποια δουλειά για να μας βοηθήσει. Εάν επεξεργαστούμε ένα από τα συγκρουόμενα αρχεία - στην περίπτωσή μας, έχουμε μόνο ένα - θα βρούμε τα αντικρουόμενα τμήματα κώδικα που επισημαίνονται για εμάς.

Κάθε σύγκρουση οριοθετείται από επτά λιγότερο από τους χαρακτήρες " & lt; & lt; & lt; & lt; & lt; & lt; "Και επτά μεγαλύτεροι από τους χαρακτήρες" & gt; & gt; & gt; & gt; & gt; & gt; & gt; ", Με επτά ισότιμα σημάδια" ======== " μεταξυ τους.

  • Ο κώδικας πάνω από τα σημάδια ισούται με το υποκατάστημα που συγχωνεύεστε σε .
  • Ο κωδικός κάτω από το ισότιμο σημάδι είναι ο κώδικας από το υποκατάστημα που προσπαθείτε συγχώνευση .

Μπορείτε εύκολα να αναζητήσετε ένα από τα σύνολα επτά χαρακτήρων και να μετακινηθείτε από συγκρούσεις σε συγκρούσεις μέσω του αρχείου σας. Για κάθε σύγκρουση, πρέπει να επιλέξετε ποιο σύνολο επεξεργασιών θα κρατήσετε. Πρέπει να επεξεργαστείτε τον κώδικα που απορρίπτετε και τις γραμμές επτά χαρακτήρων που έχει προσθέσει ο Git.

Θα διατηρήσουμε τον κώδικα από το υποκατάστημα "BugFix17". Μετά την επεξεργασία, το αρχείο μας μοιάζει με αυτό.

Μπορούμε τώρα να συνεχίσουμε με τη συγχώνευση. Αλλά σημειώστε, χρησιμοποιούμε το διαπράττω εντολή για να το κάνετε αυτό, όχι το συγχώνευση εντολή.

Δεσμεύουμε την αλλαγή με τη διοργάνωση του αρχείου και διαπράττε το ως συνήθως. Θα ελέγξουμε την κατάσταση πριν κάνουμε την τελική δέσμευση.

Η συγχώνευση είναι πλήρης. Μπορούμε τώρα να το ωθήσουμε στο απομακρυσμένο αποθετήριο μας.

ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να διορθώσετε, να επεξεργαστείτε ή να ανατρέψετε τη δέσμευση (αλλαγή ιστορικού GIT)

Όλα συγχωνεύονται τελικά

Όλα τα υποκαταστήματα πρέπει να συγχωνευθούν, τελικά, έτσι ώστε οι αλλαγές σε αυτά να μην γίνονται ορφανά και να ξεχαστούν.

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

  • > Πώς να μετονομάσετε ένα υποκατάστημα στο git
  • > Πώς να ελέγξετε ένα απομακρυσμένο υποκατάστημα Git
  • > Πώς να αποθηκεύσετε τις αλλαγές στο git
  • > Πώς να αλλάξετε τα κλαδιά στο GitHub
  • > Git Rebase: Όλα όσα πρέπει να γνωρίζετε
  • > Το OnePlus 11 είναι εδώ, αλλά με μια σκληρή εκκίνηση
  • > Η Microsoft Edge παίρνει συνομιλία AI και μια νέα ματιά στα Windows
  • > Τα καλύτερα ακουστικά για τους οπαδούς του iPhone μόλις χτύπησαν τη χαμηλότερη τιμή τους

Programming - Τα πιο δημοφιλή άρθρα

Πώς να μετονομάσετε ένα υποκατάστημα στο git

Programming Dec 19, 2024

Η διακλάδωση είναι μια ασήμαντη άσκηση στο Git. Δυστυχώς, τα ασήμαντα καθήκοντα σπάνια παίρνουν τη δέουσα π..


Κατηγορίες