5 εντολές Git που πρέπει να γνωρίζετε, με παραδείγματα κώδικα

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

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

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

Σε αυτό το άρθρο, θα μάθουμε πώς να κάνουμε τα εξής:

  1. Προσθήκη απομακρυσμένων αποθετηρίων
  2. Αλλαγή απομακρυσμένων αποθετηρίων
  3. Διαγραφή υποκαταστήματος
  4. Συγχώνευση ενός αρχείου από έναν κλάδο στον άλλο
  5. Αναίρεση μιας δέσμευσης τοπικά και απομακρυσμένα

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

1. Προσθήκη απομακρυσμένων αποθετηρίων

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

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

Όταν κλωνοποιείτε ένα αποθετήριο, το Git προσθέτει σιωπηρά αυτό το αποθετήριο ως το originτηλεχειριστήριο για εσάς. Για να προσθέσετε ένα νέο αποθετήριο Git, χρησιμοποιείτε αυτήν την εντολή:

git remote add  

πού shortnameείναι ένα μοναδικό απομακρυσμένο όνομα και urlείναι η διεύθυνση URL του αποθετηρίου που θέλετε να προσθέσετε.

Για παράδειγμα, εάν θέλω να προσθέσω ένα αποθετήριο με το σύντομο όνομα upstream, μπορώ να το κάνω:

git remote add upstream //github.com/sarahchima/personal-website.git

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

Για να δείτε τη λίστα των απομακρυσμένων διευθύνσεων URL που έχετε προσθέσει, εκτελέστε την ακόλουθη εντολή:

git remote -v

Θα δείτε μια λίστα με τα απομακρυσμένα ονόματα και τις διευθύνσεις URL που έχετε προσθέσει.

Τι γίνεται όμως αν θέλετε να αλλάξετε αυτά τα απομακρυσμένα URL; Ας προχωρήσουμε στην επόμενη εντολή Git.

2. Αλλαγή απομακρυσμένων αποθετηρίων

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

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

git remote set-url  

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

Χρησιμοποιώντας το παραπάνω παράδειγμα, εάν θέλω να αλλάξω το απομακρυσμένο URL, θα το κάνω:

git remote set-url upstream [email protected]:sarahchima/personal-website.git

Θυμηθείτε να εκτελέσετε git remote -vγια να επαληθεύσετε ότι η αλλαγή σας λειτούργησε.

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

3. Διαγράψτε ένα υποκατάστημα τόσο τοπικά όσο και απομακρυσμένα

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

Πώς να διαγράψετε ένα τοπικό υποκατάστημα

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

git branch -d 

Επομένως, εάν θέλω να διαγράψω έναν κλάδο με το όνομα fix/homepage-changes, θα κάνω τα εξής:

git branch -d fix/homepage-changes

Μπορείτε να εκτελέσετε git branchτο τερματικό σας για να επιβεβαιώσετε ότι το υποκατάστημα έχει αφαιρεθεί με επιτυχία.

Μερικές φορές μπορεί να χρειαστεί να διαγράψετε έναν κλάδο που έχετε ήδη στείλει σε ένα απομακρυσμένο αποθετήριο. Πώς μπορείτε να το κάνετε αυτό;

Πώς να διαγράψετε έναν απομακρυσμένο κλάδο

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

git push  --delete 

από πού remote-nameείναι το όνομα του απομακρυσμένου αποθετηρίου από το οποίο θέλετε να διαγράψετε τον κλάδο.

Αν θέλω να διαγράψω τον κλάδο fix/homepage-changesαπό origin, θα το κάνω:

git push origin --delete fix/homepage-changes

Το υποκατάστημα θα διαγραφεί από απόσταση.

4. Συγχώνευση ενός αρχείου από έναν κλάδο στον άλλο

Μερικές φορές, μπορεί να θέλετε να συγχωνεύσετε το περιεχόμενο ενός συγκεκριμένου αρχείου σε έναν κλάδο σε έναν άλλο. Για παράδειγμα, θέλετε να συγχωνεύσετε το περιεχόμενο ενός αρχείου index.htmlστον masterκλάδο ενός έργου στον developmentκλάδο. Πώς μπορείς να το κάνεις αυτό?

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

git checkout development

Στη συνέχεια συγχωνεύστε το αρχείο χρησιμοποιώντας την εντολή checkout --patch

git checkout --patch master index.html

Εάν θέλετε να αντικαταστήσετε εντελώς το index.htmlαρχείο στον developmentκλάδο με αυτό του masterκλάδου, αφήνετε τη --patchσημαία.

git checkout master index.html

Επίσης, αφήστε τη --patchσημαία εάν το index.htmlαρχείο δεν υπάρχει στον developmentκλάδο.

5. Αναίρεση δέσμευσης

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

Πώς να αναιρέσετε μια τοπική δέσμευση

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

git reset --soft HEAD~1

Η --softσημαία διατηρεί τις αλλαγές που έχετε κάνει στα αρχεία που έχετε διαπράξει, αλλά μόνο η δέσμευση αντιστρέφεται. Ωστόσο, εάν δεν θέλετε να διατηρήσετε τις αλλαγές που έγιναν στα αρχεία, μπορείτε να χρησιμοποιήσετε τη --hardσημαία ως εξής:

git reset --hard HEAD~1

Λάβετε υπόψη ότι πρέπει να χρησιμοποιείτε τη --hardσημαία μόνο όταν είστε βέβαιοι ότι δεν χρειάζεστε τις αλλαγές.

Επίσης, σημειώστε ότι HEAD~1δείχνει την τελευταία δέσμευση. Εάν θέλετε να αναιρέσετε μια δέσμευση πριν από αυτήν, μπορείτε να χρησιμοποιήσετε git reflogγια να λάβετε ένα αρχείο καταγραφής όλων των προηγούμενων δεσμεύσεων. Στη συνέχεια, χρησιμοποιήστε την git resetεντολή με το δεσμευτικό κατακερματισμό (ο αριθμός που λαμβάνετε στην αρχή κάθε γραμμής ιστορικού). Για παράδειγμα, εάν το δεσμευτικό μου hash είναι 9157b6910, θα το κάνω

git reset --soft 9157b6910 

Πώς να αναιρέσετε μια απομακρυσμένη δέσμευση

Υπάρχουν φορές που θέλετε να αναιρέσετε μια δέσμευση που έχετε ωθήσει σε ένα απομακρυσμένο αποθετήριο. Μπορείτε να το χρησιμοποιήσετε git revertγια να το αναιρέσετε τοπικά και να προωθήσετε αυτήν την αλλαγή στον απομακρυσμένο κλάδο.

Πρώτα, πάρτε το δεσμευτικό hash χρησιμοποιώντας το git reflog.

git reflog

Στη συνέχεια, επαναφέρετέ το. Υποθέτοντας ότι το δεσμευτικό hash μου είναι 9157b6910, θα κάνω τα εξής:

git revert 9157b6910 

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

Περίληψη

Σε αυτό το άρθρο, συζητήσαμε τις εντολές να κάνουμε τα εξής στο Git:

  1. Προσθήκη απομακρυσμένων αποθετηρίων
  2. Αλλαγή απομακρυσμένων αποθετηρίων
  3. Διαγραφή υποκαταστήματος
  4. Συγχώνευση ενός αρχείου από έναν κλάδο στον άλλο
  5. Αναίρεση μιας δέσμευσης τοπικά και απομακρυσμένα

Ίσως κάποια μέρα, θα γράψω περισσότερα πράγματα που μπορείτε να κάνετε με το Git.

Ελπίζω να σας άρεσε το άρθρο. Ευχαριστώ για την ανάγνωση.

Θέλετε να λαμβάνετε ειδοποίηση όταν δημοσιεύω ένα νέο άρθρο; Κάντε κλικ ΕΔΩ.