Git Σύγκριση δύο κλάδων

Git Compare Two Branches



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

C00 => C01 => C03 => C06 (κύρια)









C02 => C04 => C05 (ανάπτυξη)



Ελήφθησαν τα ακόλουθα βήματα:





  • C00: Προστέθηκε hello_world.py (κύριος κλάδος)
  • - Δημιούργησε τον κλάδο ανάπτυξης
  • C01: Τροποποιημένο hello_world.py για προσθήκη δεύτερου χαιρετισμού (κύριος κλάδος)
  • C02: Τροποποιημένο hello_world.py για προσθήκη κλάδου ανάπτυξης λέει Hello (κλάδος ανάπτυξης)
  • C03: Προστέθηκε readme.txt (κύριος κλάδος)
  • C04: Τροποποιημένο hello_world.py για προσθήκη κλάδου ανάπτυξης λέει Hello again (κλάδος ανάπτυξης)
  • C05: Προστέθηκε info.txt (κλάδος ανάπτυξης)
  • C06: Τροποποιημένο readme.txt για προσθήκη δεύτερης γραμμής (κύριος κλάδος)

Μετά από όλες τις δεσμεύσεις, ο κλάδος ‘master’ έχει τα ακόλουθα αρχεία:

hello_world.py
readme.txt



Και ο κλάδος «ανάπτυξης» έχει τα ακόλουθα αρχεία:

hello_world.py
info.txt


Σύγκριση των επικεφαλής δύο κλάδων

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

$git διαφοράκύριος..ανάπτυξη

διαφορά --πηγαίνωπρος το/hello_world.py β/hello_world.py
ευρετήριο e27f806..3899ed3100644
---προς το/hello_world.py
+++ β/hello_world.py
@@-2,7+2,7 @@

def main():
Τυπώνω('Πρώτα Γεια!')
- Τυπώνω('Δεύτερο γεια!')
-
+ εκτύπωση(«Ο κλάδος ανάπτυξης λέει Γεια»)
+ εκτύπωση(«Ο κλάδος ανάπτυξης λέει Γεια και πάλι»)
αν__ όνομα__ =='__κύριος__':
κύριος()
διαφορά --πηγαίνωπρος το/info.txt β/info.txt
νέοςαρχείοτρόπος100644
ευρετήριο 0000000..0ab52fd
--- /dev/μηδενικό
+++ β/info.txt
@@-0,0+1 @@
+Νέες πληροφορίες
διαφορά --πηγαίνωπρος το/readme.txt β/readme.txt
διαγράφηκεαρχείοτρόπος100644
ευρετήριο e29c296..0000000
---προς το/readme.txt
+++/dev/μηδενικό
@@-1,2+0,0 @@
-1Πρώτη γραμμή readme.txt
-2Δεύτερη γραμμή readme.txt

Η εντολή diff εξετάζει αναδρομικά τις αλλαγές. Έχει εκτελέσει τις ακόλουθες διαφορές:

diff –git a/hello_world.py b/hello_world.py
diff –git a/info.txt b/info.txt
diff –git a/readme.txt b/readme.txt

Εδώ το «a» σημαίνει τον κλάδο «master» και το «b» σημαίνει τον κλάδο ανάπτυξης. Το «α» εκχωρείται πάντα στην πρώτη παράμετρο και «β» στη δεύτερη παράμετρο. Το /dev /null σημαίνει ότι ο κλάδος δεν έχει το αρχείο.


Σύγκριση μεταξύ δεσμεύσεων

Στο παράδειγμά μας, ο κλάδος «κύριος» έχει τις ακόλουθες δεσμεύσεις:

$git κατάσταση
Στον πλοίαρχο κλάδου
τίποτα για δέσμευση, καθαρός κατάλογος εργασίας

$git log --μία γραμμή
caa0ddd C06: Τροποποιημένο readme.txt για προσθήκη δεύτερης γραμμής(κύριος κλάδος)
efaba94 C03: Προστέθηκε readme.txt(κύριος κλάδος)
ee60eac C01: Τροποποιημένο hello_world.py για προσθήκη δεύτερου χαιρετισμού(κύριος κλάδος)
22b4bf9 C00: Προστέθηκε hello_world.py(κύριος κλάδος)

Ο κλάδος ανάπτυξης έχει τις ακόλουθες δεσμεύσεις:

$git κατάσταση
Για την ανάπτυξη του κλάδου
τίποτα για δέσμευση, καθαρός κατάλογος εργασίας

$git log --μία γραμμή
df3a4ee C05: Προστέθηκε info.txt(κλάδος ανάπτυξης)
0f0abb8 C04: Τροποποιημένο hello_world.py για προσθήκη Ο κλάδος ανάπτυξης λέει Hello ξανά(κλάδος ανάπτυξης)
3f611a0 C02: Τροποποιημένο hello_world.py για προσθήκη του κλάδου ανάπτυξης λέει Hello(κλάδος ανάπτυξης)
22b4bf9 C00: Προστέθηκε hello_world.py(κύριος κλάδος)

Ας υποθέσουμε ότι θέλουμε να συγκρίνουμε το hello_world.py για C01 και C02 commits. Μπορείτε να χρησιμοποιήσετε τα hashes για σύγκριση:

$git διαφοράee60eac: hello_world.py 3f611a0: hello_world.py

διαφορά --πηγαίνωπρος το/ee60eac: hello_world.py β/3f611a0: hello_world.py
ευρετήριο e27f806..72a178d100644
---προς το/ee60eac: hello_world.py
+++ β/3f611a0: hello_world.py
@@-2,7+2,7 @@

def main():
Τυπώνω('Πρώτα Γεια!')
- Τυπώνω('Δεύτερο γεια!')
+ εκτύπωση(«Ο κλάδος ανάπτυξης λέει Γεια»)

αν__ όνομα__ =='__κύριος__':
κύριος()

Μπορείτε να χρησιμοποιήσετε την ίδια αρχή για να συγκρίνετε τις υποχρεώσεις στον ίδιο κλάδο επίσης.


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

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

Περαιτέρω μελέτη:

Βιβλιογραφικές αναφορές: