Το Εγχειρίδιο Essential Git

Εισαγωγή

Γεια! Είμαι η Sanjula και σε αυτόν τον οδηγό ελπίζω να σας διδάξω λίγο για το Git, όπως:

  • Τι είναι το Git
  • Γιατί να μάθετε το Git
  • Ρύθμιση μεταβλητών διαμόρφωσης
  • Εισαγωγή στην εντολή help στο Git
  • Πώς να μετατρέψετε ένα υπάρχον έργο σε ένα τοπικό αποθετήριο Git
  • Πράγματα που πρέπει να κάνετε πριν από την πρώτη δέσμευση
  • Πώς να προσθέσετε αρχεία στην περιοχή στάσης
  • Πώς να αφαιρέσετε αρχεία από την περιοχή στάσης
  • Κάνοντας την πρώτη σας δέσμευση
  • Πώς να κλωνοποιήσετε ένα απομακρυσμένο αποθετήριο
  • Δείτε πληροφορίες σχετικά με το απομακρυσμένο αποθετήριο
  • Πώς να προωθήσετε τις αλλαγές σας στο απομακρυσμένο αποθετήριο
  • Πώς να δημιουργήσετε έναν κλάδο για μια συγκεκριμένη δυνατότητα ή ζήτημα
  • Σπρώξτε τον κλάδο στο απομακρυσμένο αποθετήριο μετά την εκτέλεση
  • Πώς να συγχωνεύσετε ένα υποκατάστημα
  • Πώς να διαγράψετε ένα υποκατάστημα

Ας αρχίσουμε!

Τι είναι το Git;

Με απλά λόγια, το Git είναι ένα σύστημα ελέγχου διανεμημένης έκδοσης ανοιχτού κώδικα .

Τα συστήματα ελέγχου έκδοσης βοηθούν κάθε ομάδα λογισμικού να διαχειρίζεται τις αλλαγές στον πηγαίο κώδικα ενός προϊόντος ή μιας υπηρεσίας με την πάροδο του χρόνου. Παρακολουθεί όλες τις τροποποιήσεις στον πηγαίο κώδικα σε μια βάση δεδομένων. Εάν έχει γίνει ένα κρίσιμο λάθος στον πηγαίο κώδικα, τότε οι προγραμματιστές σε μια ομάδα λογισμικού μπορούν να επαναφέρουν τον πηγαίο κώδικα σε μια έκδοση πριν γίνει η εσφαλμένη αλλαγή. Ως αποτέλεσμα, τα συστήματα ελέγχου εκδόσεων προστατεύουν τον πηγαίο κώδικα από καταστροφές, ανθρώπινα λάθη και ακούσιες συνέπειες (όταν μια διόρθωση σφαλμάτων σπάει ένα άλλο μέρος της εφαρμογής, για παράδειγμα).

Γιατί λοιπόν να μάθετε το Git;

Το Git είναι το πιο διαδεδομένο σύστημα ελέγχου εκδόσεων στον κόσμο σήμερα. Πρόκειται για ένα ώριμο και ενεργά συντηρημένο έργο ανοιχτού κώδικα που αναπτύχθηκε αρχικά από τον Linus Torvalds.

Ένα εκπληκτικό ποσό έργων λογισμικού βασίζεται στο Git για έλεγχο έκδοσης, συμπεριλαμβανομένων τόσο εμπορικών όσο και έργων ανοιχτού κώδικα, ειδικά χρησιμοποιώντας την υπηρεσία φιλοξενίας git repository, GitHub, η οποία τώρα ανήκει στη Microsoft. Ως εκ τούτου, η σημασία της εκμάθησης του Git.

Προαπαιτούμενο για αυτόν τον οδηγό

Κατεβάστε και εγκαταστήστε το git εδώ

Ελέγξτε την έκδοση του git

git --version

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

Ορισμός τιμών διαμόρφωσης

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

git config --global user.name “Sanjula Madurapperuma”
git config --global user.email “[email protected]
git config --list

Εντολή Βοήθειας

Όπως ίσως παρατηρήσετε, το config είναι ένα ρήμα που έχει χρησιμοποιηθεί συχνά μέχρι στιγμής σε αυτό το εγχειρίδιο και τα ρήματα μπορούν επίσης να χρησιμοποιηθούν ως πρόθεμα ή επίθημα με την εντολή help. Μπορούμε να χρησιμοποιήσουμε το ίδιο παράδειγμα (το ρήμα config ) από πάνω για να εξηγήσουμε αυτές τις εντολές.

git help config
git config --help

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

Πώς να αρχικοποιήσετε ένα αποθετήριο από τον υπάρχοντα κώδικα

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

git init

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

Τι να κάνετε πριν από την πρώτη δέσμευση

Εισαγάγετε την ακόλουθη εντολή για να προβάλετε αρχεία χωρίς παρακολούθηση:

git status

Εάν υπάρχουν αρχεία που δεν θέλετε να βλέπουν άλλα άτομα στο αποθετήριο, όπως αρχεία που περιέχουν προσωπικές προτιμήσεις ή εκείνα του IDE, κάντε τα εξής:

touch .gitignore

Για να καθορίσετε ποια αρχεία δεν θα προστεθούν στο αποθετήριο git, ανοίξτε ένα πρόγραμμα επεξεργασίας κειμένου και δείτε το αρχείο .gitignore, το οποίο μπορεί να επεξεργαστεί σαν ένα κανονικό αρχείο κειμένου. Τώρα μπορούμε να εισαγάγουμε τα ακόλουθα στο αρχείο, για παράδειγμα:

.project
*.java

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

Τώρα εκτελέστε ξανά την κατάσταση git

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

Προσθήκη αρχείων στην περιοχή στάσης

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

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

git add -A

Εάν θέλετε να προσθέσετε αρχεία ξεχωριστά, τότε μπορούμε να δώσουμε το όνομα του αρχείου μετά το git add. Για παράδειγμα,

git add .gitignore

Τώρα αν πληκτρολογήσετε την κατάσταση git, θα δείτε ότι το αρχείο .gitignore βρίσκεται τώρα στην περιοχή στάσης.

Αφαίρεση αρχείων από την περιοχή στάσης

Για να αφαιρέσετε αρχεία ξεχωριστά από την περιοχή σταδιοποίησης, πληκτρολογήστε τα ακόλουθα (για παράδειγμα):

git reset simple.py

Αυτό θα αφαιρέσει το αρχείο simple.py από την περιοχή στάσης. Για να δείτε αυτήν την αλλαγή, πληκτρολογήστε ξανά την κατάσταση git.

Εάν θέλετε να καταργήσετε όλα τα αρχεία από την περιοχή σταδιοποίησης, εκτελέστε τα εξής:

git reset

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

Κάνοντας την πρώτη δέσμευση

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

git add -A

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

Για να δεσμεύσετε, πληκτρολογήστε τα ακόλουθα.

git commit -m “Initial Commit”

Το "-m" καθορίζει ένα μήνυμα που θα περάσει και περιγράφει τη δέσμευση. Δεδομένου ότι αυτή είναι η πρώτη μας δέσμευση, θα πούμε αρχική δέσμευση.

Όπως μπορείτε να δείτε, τα αρχεία έχουν δεσμευτεί με επιτυχία.

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

Εάν εκτελέσουμε την ακόλουθη εντολή:

git log

τότε μπορούμε να δούμε τη δέσμευση που μόλις κάναμε, συμπεριλαμβανομένου του αριθμού κατακερματισμού της δέσμευσης.

Τώρα παρακολουθούμε με επιτυχία το τοπικό έργο με git!

Κλωνοποίηση απομακρυσμένου αποθετηρίου

Εάν θέλουμε να παρακολουθήσουμε ένα υπάρχον απομακρυσμένο έργο με git, τότε πρέπει να πληκτρολογήσουμε μια εντολή με την ακόλουθη μορφή:

git clone  

Για παράδειγμα, θα χρησιμοποιώ το αποθετήριο git σε αυτόν τον σύνδεσμο.

Πρώτα θα μεταφερθώ στον κατάλογο στον οποίο θέλω να κλωνοποιήσω το έργο, αν και μπορείτε να το καθορίσετε όπως φαίνεται παραπάνω.

Μεταβείτε στον σύνδεσμο αποθετηρίου που δίνεται παραπάνω και κάντε κλικ στο κουμπί "Κλώνος ή λήψη" και, στη συνέχεια, αντιγράψτε τον σύνδεσμο που δίνεται εκεί

Στη συνέχεια εισάγετε:

git clone //github.com/sanjulamadurapperuma/GitDemoMedium.git

Τώρα κλωνοποιήσαμε με επιτυχία το αποθετήριο.

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

ls -la

Προβολή πληροφοριών σχετικά με το απομακρυσμένο αποθετήριο

Εάν πληκτρολογήσετε την ακόλουθη εντολή:

git remote -v

Αυτή η εντολή θα απαριθμήσει τις τοποθεσίες από τις οποίες το τοπικό αποθετήριο θα έπαιρνε εξωτερικές δεσμεύσεις και θα ωθήσει τις δεσμεύσεις σας στο απομακρυσμένο αποθετήριο.

Εάν πληκτρολογήσατε την εντολή

git branch -a

Αυτό θα εμφανίσει όλους τους κλάδους που βρίσκονται στο αποθετήριο, τόσο τοπικά όσο και απομακρυσμένα.

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

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

Προώθηση αλλαγών στο απομακρυσμένο αποθετήριο

Η ακόλουθη εντολή θα εμφανίσει όλες τις αλλαγές που έχουν γίνει στα αρχεία.

git diff

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

Τώρα προσθέστε τα στην περιοχή στάσης

git add -A

Εκτελέστε ξανά την κατάσταση git

Τώρα μπορούμε να δούμε ότι το simple.py είναι έτοιμο να δεσμευτεί.

Στη συνέχεια, εισαγάγετε την εντολή commit με ένα μήνυμα

git commit -m “Updated hello function”

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

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

Εκτελέστε την ακόλουθη εντολή:

git pull origin master

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

Τώρα εκτελέστε τα εξής:

git push origin master

Προωθήσαμε επιτυχώς τις αλλαγές μας στον κύριο κλάδο του απομακρυσμένου αποθετηρίου!

Δημιουργία υποκαταστήματος για μια λειτουργία ή ζήτημα

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

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

git branch simple-greeting

Τώρα αν τρέξετε

git branch

τότε θα δείτε όλους τους κλάδους στο αποθετήριο και ο τρέχων κλάδος στον οποίο βρίσκεστε επισημαίνεται με έναν αστερίσκο στην αριστερή πλευρά.

Εάν θέλετε να μεταβείτε στον κλάδο που μόλις δημιουργήσατε, πληκτρολογήστε τα εξής:

git checkout simple-greeting

Τώρα αν πληκτρολογήσετε git branch θα δείτε ότι βρίσκεστε τώρα στον κλάδο απλού χαιρετισμού.

Τώρα πρέπει να κάνουμε τις αλλαγές στο έργο. Θα μεταβούμε στο έργο και θα ορίσουμε τη λειτουργία χαιρετισμού.

Τώρα θα επαναλάβουμε τη διαδικασία πραγματοποίησης αυτών των αλλαγών:

git status
git add -A
git commit -m “Greeting Function”

Αυτή η δέσμευση θα αλλάξει μόνο τα αρχεία στον τοπικό κλάδο απλού χαιρετισμού και δεν είχε καμία επίδραση στον τοπικό κύριο κλάδο ή στο απομακρυσμένο αποθετήριο.

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

Εισαγάγετε την ακόλουθη εντολή:

git push -u origin simple-greeting

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

Τώρα έχουμε ωθήσει τον κλάδο απλού χαιρετισμού στο απομακρυσμένο αποθετήριο. Εάν πληκτρολογήσετε:

git branch -a

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

Δεδομένου ότι όλες οι δοκιμές έχουν βγει καλά (δεν θα πάμε σε λεπτομέρειες εδώ), μπορούμε τώρα να συγχωνεύσουμε τον κλάδο απλό-χαιρετισμό με τον κύριο κλάδο.

Συγχώνευση κλάδου

Πρώτον, πρέπει να κάνουμε checkout στο τοπικό κύριο υποκατάστημα

git checkout master

Τραβήξτε όλες τις αλλαγές στον απομακρυσμένο κύριο κλάδο:

git pull origin master

Θα δούμε τώρα τους κλάδους που έχουμε συγχωνεύσει μέχρι τώρα:

git branch —-merged

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

Για να συγχωνεύσετε τον απλό χαιρετισμό με τον κύριο, εισαγάγετε:

git merge simple-greeting

(Λάβετε υπόψη ότι είμαστε στον κύριο κλάδο αυτήν τη στιγμή)

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

git push origin master

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

Διαγραφή υποκαταστήματος

Δεδομένου ότι η λειτουργία έχει πλέον αναπτυχθεί, μπορούμε να διαγράψουμε τον κλάδο απλού χαιρετισμού. Για να ελέγξετε ξανά τη συγχώνευση που έγινε στην προηγούμενη ενότητα, μπορούμε να εκτελέσουμε:

git branch --merged

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

git branch -d simple-greeting

Τώρα το υποκατάστημα έχει διαγραφεί τοπικά.

Αλλά επειδή σπρώξαμε τον κλάδο στο απομακρυσμένο αποθετήριο, είναι ακόμα εκεί στο απομακρυσμένο αποθετήριο. Αυτό μπορεί να φανεί τρέχοντας:

git branch -a

Για να αφαιρέσετε τον κλάδο από το απομακρυσμένο αποθετήριο, εισαγάγετε:

git push origin --delete simple-greeting

Εάν εκτελέσουμε ξανά

git branch -a

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

Συγχαρητήρια!!! Τώρα είστε πλοίαρχος σε βασικές αλλά κρίσιμες εντολές Git!

Για αναφορά ή χρήση αυτού του σεμιναρίου, εδώ είναι ο δημόσιος σύνδεσμος αποθετηρίου GitHub

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