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

Όπως και οι περισσότεροι αρχάριοι, ξεκίνησα να ψάχνω στο StackOverflow για εντολές Git και μετά να αντιγράψω-να επικολλήσω απαντήσεις, χωρίς να καταλάβω πραγματικά τι έκαναν.

Θυμάμαι να σκέφτομαι,"Δεν θα ήταν ωραίο αν υπήρχε μια λίστα με τις πιο κοινές εντολές Git μαζί με μια εξήγηση για το γιατί είναι χρήσιμες;"

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

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

Σχεδόν κάθε προγραμματιστής χρησιμοποιεί το Git και πιθανότατα το GitHub. Αλλά ο μέσος προγραμματιστής χρησιμοποιεί πιθανώς μόνο αυτές τις τρεις εντολές το 99% του χρόνου:

git add --allgit commit -am ""git push origin master

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

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

Τακτικά χρησιμοποιούμενες εντολές

Για να ξεκινήσετε το Git σε ένα αποθετήριο (repo), απλά πρέπει να πληκτρολογήσετε την ακόλουθη εντολή. Εάν δεν προετοιμάσετε το Git, δεν μπορείτε να εκτελέσετε άλλες εντολές Git σε αυτό το repo.

git init

Εάν χρησιμοποιείτε το GitHub και πιέζετε κώδικα σε ένα repo GitHub που είναι αποθηκευμένο στο διαδίκτυο, χρησιμοποιείτε ένα απομακρυσμένο repo. Το προεπιλεγμένο όνομα (επίσης γνωστό ως ψευδώνυμο) για αυτό το απομακρυσμένο repo είναι προέλευση . Εάν έχετε αντιγράψει ένα έργο από το Github, έχει ήδη προέλευση . Μπορείτε να δείτε αυτήν την προέλευση με την εντολή git remote -v , η οποία θα παραθέτει τη διεύθυνση URL του απομακρυσμένου repo.

Εάν ξεκινήσατε το δικό σας Git repo και θέλετε να το συσχετίσετε με ένα GitHub repo, θα πρέπει να δημιουργήσετε ένα στο GitHub, να αντιγράψετε το παρεχόμενο URL και να χρησιμοποιήσετε την εντολή git remote add origin RL>, με το URL που παρέχεται από το GitHub να αντικαθιστά το "". Από εκεί, μπορείτε να προσθέσετε, να δεσμεύσετε και να προωθήσετε το απομακρυσμένο repo σας.

Το τελευταίο χρησιμοποιείται όταν πρέπει να αλλάξετε το απομακρυσμένο αποθετήριο. Ας υποθέσουμε ότι αντιγράψατε ένα repo από κάποιον άλλο και θέλετε να αλλάξετε το απομακρυσμένο αποθετήριο από τον αρχικό κάτοχο στον δικό σας λογαριασμό GitHub. Ακολουθήστε την ίδια διαδικασία με το git remote add origin , εκτός από το set-url αντί για να αλλάξετε το απομακρυσμένο repo.

git remote -vgit remote add origin git remote set-url origin 

Ο πιο συνηθισμένος τρόπος αντιγραφής ενός repo είναι να χρησιμοποιήσετε το git clone, ακολουθούμενο από τη διεύθυνση URL του repo.

Λάβετε υπόψη ότι το απομακρυσμένο αποθετήριο θα συνδεθεί με τον λογαριασμό από τον οποίο κλωνοποιήσατε το repo. Αν λοιπόν κλωνοποιήσατε ένα repo που ανήκει σε κάποιον άλλο, δεν θα μπορείτε να προωθήσετε το GitHub μέχρι να αλλάξετε την προέλευση χρησιμοποιώντας τις παραπάνω εντολές.

git clone 

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

Ο κλάδος εντολών git παραθέτει όλους τους κλάδους στον τοπικό υπολογιστή σας. Εάν θέλετε να δημιουργήσετε έναν νέο κλάδο, μπορείτε να χρησιμοποιήσετε το git branch εγώ>, με & lt; name> που αντιπροσωπεύει το όνομα του υποκαταστήματος, όπως "master".

Η παραγγελία git me> η εντολή αλλάζει σε υπάρχον κλάδο. Μπορείτε επίσης να μας χρησιμοποιήσετε την εντολή git checkout -b & lt; name> για να δημιουργήσετε έναν νέο κλάδο και να μεταβείτε αμέσως σε αυτό. Τα περισσότερα άτομα το χρησιμοποιούν αντί για ξεχωριστές εντολές κλάδου και αγοράς.

git branchgit branch git checkout git checkout -b 

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

ch> εντολή. Θα πρέπει να ελέγξετε τον κύριο κλάδο, το n run git merge d evelop να συγχωνευθεί να αναπτυχθεί στον κύριο κλάδο.

git merge 

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

ch> για να τραβήξετε τις πιο πρόσφατες αλλαγές από αυτόν τον απομακρυσμένο κλάδο.

git pull origin 

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

git statusgit diff --stat

Προηγμένες εντολές και βέλτιστες πρακτικές

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

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

Οι δεσμεύσεις σας θα συνοδεύονται από μηνύματα και κατακερματισμό , που είναι τυχαία σειρά αριθμών και γραμμάτων. Ένα παράδειγμα hash μπορεί να μοιάζει με αυτό: c3d882aa1aa4e3d5f18b3890132670fbeac912f7

git log

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

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

git checkout c3d88eaa1aa4e4d5f

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

Προσοχή: Δύναμη ώθησηςis dangerous and should only be done if you absolutely must. It will overwrite the history of your app and you will lose whatever came after.

git push -f origin master

Other times it’s just not practical to keep everything in one commit. Perhaps you want to save your progress before trying something potentially risky, or perhaps you made a mistake and want to spare yourself the embarrassment of having an error in your version history. For that, we have git rebase.

Let’s say you have 4 commits in your local history (not pushed to GitHub) in which you’ve gone back and forth. Your commits look sloppy and indecisive. You can use rebase to combine all of those commits into a single, concise commit.

git rebase -i HEAD~4

The above command will open up your computer’s default editor (which is Vim unless you’ve set it to something else), with several options for how you can change your commits. It will look something like the code below:

pick 130deo9 oldest commit messagepick 4209fei second oldest commit messagepick 4390gne third oldest commit messagepick bmo0dne newest commit message

In order to combine these, we need to change the “pick” option to “fixup” (as the documentation below the code says) to meld the commits and discard the commit messages. Note that in vim, you need to press “a” or “i” to be able to edit the text, and to save and exit, you need to type the escape key followed by “shift + z + z”. Don’t ask me why, it just is.

pick 130deo9 oldest commit messagefixup 4209fei second oldest commit messagefixup 4390gne third oldest commit messagefixup bmo0dne newest commit message

This will merge all of your commits into the commit with the message “oldest commit message”.

The next step is to rename your commit message. This is entirely a matter of opinion, but so long as you follow a consistent pattern, anything you do is fine. I recommend using the commit guidelines put out by Google for Angular.js.

In order to change the commit message, use the amend flag.

git commit --amend

This will also open vim, and the text editing and saving rules are the same as above. To give an example of a good commit message, here’s one following the rules from the guideline:

feat: add stripe checkout button to payments page
- add stripe checkout button- write tests for checkout

One advantage to keeping with the types listed in the guideline is that it makes writing change logs easier. You can also include information in the footer (again, specified in the guideline) that references issues.

Note: you should avoid rebasing and squashing your commits if you are collaborating on a project, and have code pushed to GitHub. If you start changing version history under people’s noses, you could end up making everyone’s lives more difficult with bugs that are difficult to track.

There are an almost endless number of possible commands with Git, but these commands are probably the only ones you’ll need to know for your first few years of programming.

Sam Corcos is the lead developer and co-founder of Sightline Maps, the most intuitive platform for 3D printing topographical maps, as well as LearnPhoenix.io, an intermediate-advanced tutorial site for building scalable production apps with Phoenix and React.