Επεξήγηση εντολής Git Commit

Η git commitεντολή θα αποθηκεύσει όλες τις σταδιακές αλλαγές, μαζί με μια σύντομη περιγραφή από τον χρήστη, σε μια «δέσμευση» στο τοπικό αποθετήριο.

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

  • μπορείτε να ανακαλέσετε τις δεσμευμένες αλλαγές αργότερα ή να επαναφέρετε το έργο σε αυτήν την έκδοση (δείτε το Git checkout)
  • Εάν πολλαπλές δεσμεύσεις επεξεργάζονται διαφορετικά μέρη του έργου, δεν θα αντικαθιστούν ο ένας τον άλλον, ακόμη και αν οι συντάκτες της δέσμευσης δεν γνωρίζουν ο ένας τον άλλον. Αυτό είναι ένα από τα πλεονεκτήματα της χρήσης του Git μέσω ενός εργαλείου όπως το Dropbox ή το Google Drive.

Επιλογές

Υπάρχουν πολλές επιλογές με τις οποίες μπορείτε να συμπεριλάβετε git commit. Ωστόσο, αυτός ο οδηγός θα καλύψει μόνο τις δύο πιο κοινές επιλογές. Για μια εκτενή λίστα επιλογών, συμβουλευτείτε την τεκμηρίωση του Git.

Η επιλογή -m

Η πιο συνηθισμένη επιλογή που χρησιμοποιείται git commitείναι η -mεπιλογή. Το -mπερίγραμμα του μηνύματος. Κατά την κλήση git commit, απαιτείται να συμπεριλάβετε ένα μήνυμα. Το μήνυμα πρέπει να είναι μια σύντομη περιγραφή των αλλαγών που πραγματοποιούνται. Το μήνυμα πρέπει να βρίσκεται στο τέλος της εντολής και πρέπει να είναι τυπωμένο με εισαγωγικά " ".

Ένα παράδειγμα του τρόπου χρήσης της -mεπιλογής:

git commit -m "My message"

Η έξοδος στο τερματικό σας θα πρέπει να μοιάζει με αυτό:

[master 13vc6b2] My message 1 file changed, 1 insertion(+)

ΣΗΜΕΙΩΣΗ: Εάν-mδεν περιλαμβάνεται στηνgit commitεντολή, θα σας ζητηθεί να προσθέσετε ένα μήνυμα στον προεπιλεγμένο επεξεργαστή κειμένου - ανατρέξτε στην ενότητα «Χρήση λεπτομερών μηνυμάτων δέσμευσης» παρακάτω.

Η επιλογή

Μια άλλη δημοφιλής επιλογή είναι η -aεπιλογή. Οι -aβάσεις για όλους. Αυτή η επιλογή σταματά αυτόματα όλα τα τροποποιημένα αρχεία που θα δεσμευτούν Εάν προστεθούν νέα αρχεία, η -aεπιλογή δεν θα σταματήσει αυτά τα νέα αρχεία. Θα δεσμευτούν μόνο αρχεία που το αποθετήριο Git γνωρίζει.

Για παράδειγμα:

Ας υποθέσουμε ότι έχετε ένα README.mdαρχείο που έχει ήδη δεσμευτεί στο αποθετήριο σας. Εάν κάνετε αλλαγές σε αυτό το αρχείο, μπορείτε να χρησιμοποιήσετε την -aεπιλογή στην εντολή δέσμευσής σας για να πραγματοποιήσετε στάδιο και να προσθέσετε τις αλλαγές στο αποθετήριο σας. Ωστόσο, τι γίνεται αν προσθέσατε και ένα νέο αρχείο που ονομάζεται index.html; Η -aεπιλογή δεν θα ενεργοποιήσει το στάδιο index.htmlκαθώς δεν υπάρχει αυτήν τη στιγμή στο αποθετήριο. Όταν έχουν προστεθεί νέα αρχεία, η git addεντολή θα πρέπει να καλείται για να σταματήσει τα αρχεία πριν μπορέσουν να δεσμευτούν στο αποθετήριο.

Ένα παράδειγμα του τρόπου χρήσης της -aεπιλογής:

git commit -am “My new changes”

Η έξοδος στο τερματικό σας θα πρέπει να μοιάζει με αυτό:

[master 22gc8v1] My new message 1 file changed, 1 insertion(+)

Χρήση λεπτομερών μηνυμάτων δέσμευσης

Αν και git commit -m "commit message"λειτουργεί καλά, μπορεί να είναι χρήσιμο να παρέχουμε πιο λεπτομερείς και συστηματικές πληροφορίες.

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

Εχε υπόψιν:

  • Διατηρήστε το μήκος των γραμμών μηνυμάτων δέσμευσης λιγότερο από 72 χαρακτήρες ως συνήθης πρακτική
  • Είναι απολύτως εντάξει - ακόμη και συνιστάται - να γράφετε μηνύματα πολλαπλών δεσμεύσεων
  • Μπορείτε επίσης να αναφερθείτε σε άλλα ζητήματα ή να τραβήξετε αιτήματα στο μήνυμα δέσμευσης. Το GitHub εκχώρησε μια αριθμητική αναφορά σε όλα τα αιτήματα έλξης και τα ζητήματα, οπότε για παράδειγμα, εάν θέλετε να αναφερθείτε στην αίτηση τραβήγματος # 788, απλώς κάντε το είτε στη γραμμή θέματος είτε στο κύριο κείμενο, ανάλογα

Η επιλογή τροποποίησης

Η --amendεπιλογή σάς επιτρέπει να αλλάξετε την τελευταία σας δέσμευση. Ας πούμε ότι μόλις διαπράξατε και κάνατε ένα λάθος στο μήνυμα καταγραφής δεσμεύσεων. Μπορείτε να τροποποιήσετε εύκολα την πιο πρόσφατη δέσμευση χρησιμοποιώντας την εντολή:

git commit --amend -m "an updated commit message"

Εάν ξεχάσετε να συμπεριλάβετε ένα αρχείο στη δέσμευση:

git add FORGOTTEN-FILE-NAME git commit --amend -m "an updated commit message" # If you don't need to change the commit message, use the --no-edit option git add FORGOTTEN-FILE-NAME git commit --amend --no-edit

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

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

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

git commit --amend --author="John Doe "

Η επιλογή -v ή —verbose

The -v or --verbose option is used without the -m option. The -v option can be useful when you wish to edit a Git commit message in your default editor while being able to see the changes you made for the commit. The command opens your default text editor with a commit message template as well as a copy of the changes you made for this commit. The changes, or diff, will not be included in the commit message, but they provide a nice way to reference your changes when you’re describing them in your commit message.

How to squash multiple commits into one

This is an awesome feature of rebase that can be used in the interactive mode. To squash the last n commits into one, run the following command:

git rebase -i HEAD~n

Αυτό θα ανοίξει ένα πρόγραμμα επεξεργασίας κειμένου με κάτι παρόμοιο με το ακόλουθο:

pick commit_1 pick commit_2 pick commit_3 ... pick commit_n # Bunch of comments

Αφήστε την πρώτη δέσμευση μόνο και αλλάξτε τα υπόλοιπα pickσε squash. Αποθηκεύστε και βγείτε από τον επεξεργαστή.

Έτσι, εάν θέλετε να σκουπίσετε τις τρεις τελευταίες δεσμεύσεις, θα εκτελέσετε πρώτα git rebase -i HEAD~3και στη συνέχεια θα θέλετε να επεξεργαστείτε τις δεσμεύσεις σας ώστε να μοιάζουν με αυτό:

pick dd661ba Commit 1 squash 71f5fee Commit 2 squash f4b4bf1 Commit 3

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

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

Περισσότερες πληροφορίες:

  • Τεκμηρίωση Git: δέσμευση