Μάθετε τα βασικά του Git σε λιγότερο από 10 λεπτά

Ναι, ο τίτλος είναι ένα κλικ. Δεν υπάρχει τρόπος να καταλάβετε τα βασικά της τεχνολογίας git σε μόλις 10 λεπτά. Αλλά μπορείτε να φτάσετε πολύ κοντά σε περίπου 25 λεπτά. Και αυτός είναι ο σκοπός αυτού του άρθρου.

Αν θέλετε να ξεκινήσετε να μαθαίνετε για την τεχνολογία Git, έχετε φτάσει στο σωστό μέρος. Αυτός είναι ένας ολοκληρωμένος οδηγός για αρχάριους στο Git. Υπάρχουν πολλοί πελάτες για το Git. Η τεχνολογία είναι η ίδια ανεξάρτητα από τον πελάτη. Αλλά σε αυτόν τον οδηγό θα χρησιμοποιήσουμε το GitHub για να κατανοήσουμε το Git.

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

Τι είναι ο έλεγχος έκδοσης;

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

Εμ ... Εντάξει ... Αλλά γιατί;

Εδώ είναι γιατί:

Το Σύστημα Ελέγχου Έκδοσης (VCS) σάς επιτρέπει να επαναφέρετε αρχεία σε προηγούμενη κατάσταση, να επαναφέρετε ολόκληρο το έργο σε προηγούμενη κατάσταση, να ελέγξετε τις αλλαγές που έγιναν με την πάροδο του χρόνου, να δείτε ποιος τροποποίησε τελευταία κάτι που μπορεί να προκαλεί πρόβλημα, ποιος εισήγαγε ένα ζήτημα και πότε, και πολλά άλλα. Η χρήση ενός VCS σημαίνει επίσης ότι εάν βιδώσετε τα πράγματα ή χάσετε αρχεία, μπορείτε γενικά να ανακτήσετε εύκολα. Και μερικές φορές απλώς θέλετε να μάθετε "ποιος έγραψε αυτό το χάλια" και η πρόσβαση σε αυτές τις πληροφορίες αξίζει τον κόπο;

Τι είναι το Git;

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

Το Git σάς βοηθά να παρακολουθείτε τις αλλαγές που κάνετε στον κώδικά σας. Είναι βασικά η καρτέλα ιστορικού για τον επεξεργαστή κώδικα (χωρίς λειτουργία ανώνυμης περιήγησης;). Εάν σε οποιοδήποτε σημείο κατά την κωδικοποίηση, έχετε ένα θανατηφόρο σφάλμα και δεν ξέρετε τι το προκαλεί, μπορείτε πάντα να επιστρέψετε στη σταθερή κατάσταση. Έτσι είναι πολύ χρήσιμο για τον εντοπισμό σφαλμάτων. Ή μπορείτε απλά να δείτε ποιες αλλαγές κάνατε στον κώδικά σας με την πάροδο του χρόνου.

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

Το Git σας βοηθά επίσης να συγχρονίσετε κώδικα μεταξύ πολλών ατόμων. Φανταστείτε λοιπόν ότι εσείς και ο φίλος σας συνεργάζεστε σε ένα έργο. Και οι δύο εργάζεστε στα ίδια αρχεία έργου. Τώρα το Git παίρνει αυτές τις αλλαγές που εσείς και ο φίλος σας κάνατε ανεξάρτητα και τις συγχωνεύει σε ένα μόνο αποθετήριο " Master ". Έτσι, χρησιμοποιώντας το Git μπορείτε να διασφαλίσετε ότι και οι δύο εργάζεστε στην πιο πρόσφατη έκδοση του αποθετηρίου. Επομένως, δεν χρειάζεται να ανησυχείτε για την αλληλογραφία των αρχείων σας και για την εργασία με έναν γελοίο αριθμό αντιγράφων του αρχικού αρχείου. Και η συνεργασία σε μεγάλες αποστάσεις γίνεται τόσο εύκολη όσο η HTML;

Ροή εργασίας Git:

Πριν ξεκινήσουμε να δουλεύουμε με τις εντολές Git, είναι απαραίτητο να καταλάβεις τι αντιπροσωπεύει.

Τι είναι το αποθετήριο;

Ένα αποθετήριο aka repo δεν είναι παρά μια συλλογή πηγαίου κώδικα.

Υπάρχουν τέσσερα βασικά στοιχεία στη ροή εργασίας του Git.

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

Εάν θεωρείτε ένα αρχείο στον κατάλογο εργασίας σας, μπορεί να είναι σε τρεις πιθανές καταστάσεις.

  1. Μπορεί να οργανωθεί. Αυτό σημαίνει ότι τα αρχεία με τις ενημερωμένες αλλαγές επισημαίνονται ως δεσμευμένα στο τοπικό αποθετήριο αλλά δεν έχουν ακόμη δεσμευτεί.
  2. Μπορεί να τροποποιηθεί . Αυτό σημαίνει ότι τα αρχεία με τις ενημερωμένες αλλαγές δεν αποθηκεύονται ακόμη στο τοπικό αποθετήριο.
  3. Μπορεί να δεσμευτεί . Αυτό σημαίνει ότι οι αλλαγές που κάνατε στο αρχείο σας αποθηκεύονται με ασφάλεια στο τοπικό αποθετήριο.
  • git add είναι μια εντολή που χρησιμοποιείται για την προσθήκη ενός αρχείου που βρίσκεται στον κατάλογο εργασίας στην περιοχή σταδιοποίησης.
  • git commit είναι μια εντολή που χρησιμοποιείται για την προσθήκη όλων των αρχείων που βρίσκονται στο τοπικό αποθετήριο.
  • git pushείναι μια εντολή που χρησιμοποιείται για την προσθήκη όλων των δεσμευμένων αρχείων στο τοπικό αποθετήριο στο απομακρυσμένο αποθετήριο. Έτσι, στο απομακρυσμένο αποθετήριο, όλα τα αρχεία και οι αλλαγές θα είναι ορατά σε οποιονδήποτε έχει πρόσβαση στο απομακρυσμένο αποθετήριο.
  • git fetch είναι μια εντολή που χρησιμοποιείται για τη λήψη αρχείων από το απομακρυσμένο αποθετήριο στο τοπικό αποθετήριο αλλά όχι στον κατάλογο εργασίας.
  • git merge είναι μια εντολή που χρησιμοποιείται για τη λήψη των αρχείων από το τοπικό αποθετήριο στον κατάλογο εργασίας.
  • git pullείναι η εντολή που χρησιμοποιείται για τη λήψη αρχείων από το απομακρυσμένο αποθετήριο απευθείας στον κατάλογο εργασίας. Είναι ισοδύναμο με το a git fetchκαι a git merge.

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

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

Βήμα 0: Δημιουργήστε έναν λογαριασμό GitHub. Ντου.

Εάν δεν έχετε ήδη ένα, μπορείτε να το δημιουργήσετε εδώ.

Βήμα 1: Βεβαιωθείτε ότι έχετε εγκαταστήσει το Git στον υπολογιστή σας.

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

$ git --version

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

Εάν χρησιμοποιείτε Linux (deb), εισαγάγετε τα ακόλουθα στο τερματικό:

$ sudo apt install git-all

Εάν χρησιμοποιείτε Windows :

$ get a mac

Απλά αστειεύομαι… Χαλαρώστε… Ο αριθμός των ανθρώπων που πυροδότησα…

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

Βήμα 2: Πείτε στον Git ποιος είστε.

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

$ git config --global user.name "YOUR_USERNAME" 
$ git config --global user.email "[email protected]"
$ git config --global --list # To check the info you just provided

Βήμα 3: Δημιουργήστε / ελέγξτε το μηχάνημά σας για υπάρχοντα κλειδιά SSH. (Προαιρετικός)

Γιατί ρωτάς? Χρησιμοποιώντας το πρωτόκολλο SSH , μπορείτε να συνδεθείτε και να πραγματοποιήσετε έλεγχο ταυτότητας για να κάνετε emote διακομιστές και υπηρεσίες . Με τα κλειδιά SSH, μπορείτε να συνδεθείτε στο GitHub χωρίς να δώσετε το όνομα χρήστη ή τον κωδικό πρόσβασής σας σε κάθε επίσκεψη.

Ακολουθήστε αυτόν τον σύνδεσμο για να μάθετε περισσότερα σχετικά με το SSH.

Πήγαινε εδώγια να ελέγξετε εάν έχετε υπάρχον κλειδί SSH.

Μεταβείτε εδώ για να δημιουργήσετε ένα κλειδί SSH.

Πήγαινε εδώγια να προσθέσετε το κλειδί SSH στον λογαριασμό σας στο GitHub.

Και τέλος πηγαίνετε εδώ για να δοκιμάσετε τη σύνδεσή του.

Εάν κάνατε το SSH, κάθε εντολή git που έχει έναν σύνδεσμο την αντικαθιστάτε από:

Instead of : //github.com/username/reponame
You use : [email protected]/username/reponame.git
 Note : You can use both ways alternatively

Θα χρησιμοποιήσω το πρωτόκολλο SSH σε αυτό το σεμινάριο.

Βήμα 4: Ας Git

Δημιουργήστε ένα νέο αποθετήριο στο GitHub. Ακολουθήστε αυτόν τον σύνδεσμο.

Τώρα, εντοπίστε το φάκελο που θέλετε να τοποθετήσετε στο git στο τερματικό σας.

$ cd Desktop/MuskCult

Αρχικοποιήστε το Git:

Και για να το τοποθετήσετε κάτω από το git, εισαγάγετε:

$ touch README.md # To create a README file for the repository$ git init # Initiates an empty git repository

Τώρα μεταβείτε στο αρχείο README.md για να παρέχετε πληροφορίες σχετικά με το αποθετήριο.

Προσθέστε αρχεία στο Staging Area για δέσμευση:

Τώρα για να προσθέσετε τα αρχεία στο αποθετήριο git για τη δέσμευση:

$ git add . # Adds all the files in the local repository and stages them for commit
OR if you want to add a specific file
$ git add README.md # To add a specific file

Πριν δεσμευτούμε, ας δούμε ποια αρχεία είναι σταδιακά:

$ git status # Lists all new or modified files to be committed

Δέσμευση αλλαγών που κάνατε στο Git Repo:

Τώρα για να δεσμεύσετε αρχεία που προσθέσατε στο git repo:

$ git commit -m "First commit"# The message in the " " is given so that the other users can read the message and see what changes you made

Καταργήστε τις αλλαγές που κάνατε στο Git Repo:

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

$ git reset HEAD~1# Remove the most recent commit# Commit again!

Προσθέστε μια απομακρυσμένη προέλευση και Push:

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

$ git remote add origin remote_repository_URL# sets the new remote

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

$ git remote -v# List the remote connections you have to other repositories.

Η εντολή git remote -v παραθέτει τις διευθύνσεις URL των απομακρυσμένων συνδέσεων που έχετε σε άλλα αποθετήρια.

$ git push -u origin master # pushes changes to origin

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

Και τώρα αν πάμε και ελέγξουμε τη σελίδα αποθετηρίου μας στο GitHub θα πρέπει να μοιάζει με αυτό:

Και αυτό είναι. Μόλις προσθέσατε τα αρχεία στο αποθετήριο που μόλις δημιουργήσατε στο GitHub.

Δείτε τις αλλαγές που κάνατε στο αρχείο σας:

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

$ git diff # To show the files changes not yet staged

Επιστρέψτε στην τελευταία δεσμευμένη έκδοση στο Git Repo:

Τώρα μπορείτε να επιλέξετε να επιστρέψετε στην τελευταία δεσμευμένη έκδοση εισάγοντας:

$ git checkout .
OR for a specific file
$ git checkout -- 

Προβολή ιστορικού δεσμεύσεων:

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

$ git log

Κάθε φορά που κάνετε αλλαγές που θέλετε να αντικατοπτρίζονται στο GitHub, τα ακόλουθα είναι η πιο κοινή ροή εντολών:

$ git add .$ git status # Lists all new or modified files to be committed$ git commit -m "Second commit"$ git push -u origin master

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

Βήμα 5: Όλα αυτά είναι καλά και καλά… Αλλά πώς μπορώ να κατεβάσω και να δουλέψω σε άλλα αποθετήρια στο GitHub;

Κλωνοποίηση ενός Git Repo:

Εντοπίστε στον κατάλογο που θέλετε να κλωνοποιήσετε το repo. Αντιγράψτε το σύνδεσμο του αποθετηρίου που θέλετε και εισαγάγετε τα εξής:

$ git clone remote_repository_URL

Μη διστάσετε να προχωρήσετε και να κλωνοποιήσετε το repo που δημιούργησα παραπάνω χρησιμοποιώντας: //github.com/Gothamv/MuskCult

Προώθηση αλλαγών στο Git Repo:

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

Συνεργασία:

Φανταστείτε λοιπόν ότι εσείς και ο φίλος σας συνεργάζεστε σε ένα έργο. Και οι δύο εργάζεστε στα ίδια αρχεία έργου. Κάθε φορά που κάνετε κάποιες αλλαγές και το πιέζετε στο master repo, ο φίλος σας πρέπει να τραβά τις αλλαγές που πιέσατε στο git repo. Σημασία για να βεβαιωθείτε ότι εργάζεστε στην τελευταία έκδοση του git repo κάθε φορά που αρχίζετε να εργάζεστε, μια εντολή git pull είναι ο τρόπος να πάτε.

Παρακάτω είναι ένα παράδειγμα ενός έργου που συνεργάζομαι με τον φίλο μου:

Έτσι, για να βεβαιωθώ ότι αυτές οι αλλαγές αντικατοπτρίζονται στο τοπικό αντίγραφο του repo:

$ git pull origin master

Ακολουθούν δύο ακόμη χρήσιμες εντολές git:

$ git fetch AND$ git merge

Με τους απλούστερους όρους, git fetchακολουθούμενο από το git merge ισούται με ένα git pull. Αλλά γιατί υπάρχουν;

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

Όταν εσείς git fetch, το Git συγκεντρώνει τυχόν δεσμεύσεις από τον κλάδο προορισμού που δεν υπάρχουν στον τρέχοντα κλάδο σας και τις αποθηκεύει στο τοπικό αποθετήριό σας . Ωστόσο, δεν τα συγχωνεύει με τον τρέχοντα κλάδο σας . Αυτό είναι ιδιαίτερα χρήσιμο εάν πρέπει να διατηρήσετε ενημερωμένο το αποθετήριο σας, αλλά εργάζεστε σε κάτι που μπορεί να σπάσει εάν ενημερώσετε τα αρχεία σας. Για να ενσωματώσετε τις δεσμεύσεις στον κύριο κλάδο σας, χρησιμοποιείτε git merge.

Ακόμη ένα πράγμα:

.gitignore

Οπότε, τι είναι?

.gitignoreλέει git ποια αρχεία (ή μοτίβα) πρέπει να αγνοήσει. Συνήθως χρησιμοποιείται για την αποφυγή προσωρινών αρχείων από τον κατάλογο εργασίας σας που δεν είναι χρήσιμα σε άλλους συνεργάτες, όπως προϊόντα συλλογής, προσωρινά αρχεία που δημιουργούν IDE κ.λπ.

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

Χρησιμοποιήστε την εντολή αφής για να δημιουργήσετε το .gitignoreαρχείο:

$ touch .gitignore

Και μπορείτε να προσθέσετε τα ακόλουθα μοτίβα για να πείτε στο git να αγνοήσει τέτοια αρχεία.

/*.cmake/*.DS_Store/.user/buildetc. depending upon the files you want git to untrack

Και αυτό ισχύει για τα βασικά. Μείνετε συντονισμένοι για το Μέρος 2 που θα επικεντρωθεί στα Branch, Merge, Stash, Rebase κ.λπ.

Αν σας άρεσε το άρθρο, μην ξεχάσετε να σπάσετε αυτό το κουμπί χειροκρότημα και βεβαιωθείτε ότι με ακολουθείτε για το Μέρος 2.

Peace Out ✌️

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

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

Η τοποθέτηση της υπάρχουσας εργασίας σας στο GitHub μπορεί να σας επιτρέψει να μοιραστείτε και να συνεργαστείτε με πολλούς υπέροχους τρόπους. Εάν κάνετε μετεγκατάσταση… help.github.com Πώς να αναιρέσετε (σχεδόν) οτιδήποτε με το Git

Ένα από τα πιο χρήσιμα χαρακτηριστικά οποιουδήποτε συστήματος ελέγχου έκδοσης είναι η δυνατότητα "αναίρεσης" των λαθών σας. Στο Git, "αναίρεση"… blog.github.com Git στη γραμμή εντολών - Μην φοβάστε να πραγματοποιήσετε 0,3 τεκμηρίωση

Υπάρχουν άλλοι τρόποι εγκατάστασης του Git. μπορείτε να πάρετε ακόμη και μια γραφική εφαρμογή Git, που θα περιλαμβάνει την γραμμή εντολών ... dont-be-afraid-to-commit.readthedocs.io Αρχίστε να χρησιμοποιείτε το Git στη γραμμή εντολών | GitLab

Τεκμηρίωση για GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab και GitLab Runner. docs.gitlab.com Ποια είναι η διαφορά μεταξύ «git pull» και «git fetch»;

Συντονιστής Σημείωση: Δεδομένου ότι αυτή η ερώτηση είχε ήδη δημοσιεύσει εξήντα επτά απαντήσεις σε αυτήν (ορισμένες από αυτές διαγράφηκαν)… stackoverflow.com