Κάνω commit — τι είναι, κανόνες μορφοποίησης και δουλειά με Git

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-07-31 Χρόνος ανάγνωσης: 6 λεπ

Κάνω commit — η ενέργεια καταγραφής αλλαγών στο σύστημα ελέγχου εκδόσεων Git, δημιουργώντας ένα σημείο αποθήκευσης στην ιστορία του έργου. Κάθε commit περιλαμβάνει hash, συγγραφέα, ημερομηνία και περιγραφή αλλαγών. Σύμφωνα με τα δεδομένα GitHub Octoverse 2024, καθημερινά δημιουργούνται πάνω από 50 εκατομμύρια commit παγκοσμίως. Commit — η βασική μονάδα εργασίας με εκδόσεις, χωρίς την οποία είναι αδύνατο να φανταστεί κανείς τη σύγχρονη ανάπτυξη λογισμικού.

Κύρια σημεία

  • Κάνω commit — αποθήκευση αλλαγών στο Git με περιγραφή των διορθώσεων
  • Κάθε commit έχει μοναδικό hash, συγγραφέα, ημερομηνία και μήνυμα
  • Ατομικότητα — κάθε commit περιέχει μία λογική αλλαγή
  • Μήνυμα commit πρέπει να απαντά στην ερώτηση «γιατί» έγινε η αλλαγή
  • Commits μπορούν να συμπληρωθούν, να ακυρωθούν και να συνδυαστούν μέσω git amend και rebase

Τι είναι commit στο Git

Ένα commit στο Git είναι ένα αντικείμενο που αποθηκεύει την κατάσταση των αρχείων του έργου σε μια συγκεκριμένη χρονική στιγμή. Κάθε commit περιέχει ένα στιγμιότυπο όλων των παρακολουθούμενων αρχείων, αναφορά στο γονικό commit και μεταδεδομένα. Σε αντίθεση με άλλα συστήματα ελέγχου εκδόσεων, το Git χρησιμοποιεί content-addressable storage — κάθε αντικείμενο αναγνωρίζεται από το hash SHA-1 του περιεχομένου του.

Όταν ο προγραμματιστής κάνει commit αλλαγών, το Git δημιουργεί ένα commit object που αποθηκεύει: tree object (δομή αρχείων), hash γονικού commit, συγγραφέα, committer, ημερομηνία και μήνυμα. Αυτό το αντικείμενο είναι αμετάβλητο — μετά τη δημιουργία, το commit δεν μπορεί να τροποποιηθεί χωρίς αλλαγή του hash του. Αυτή η αμεταβλητότητα εγγυάται την ακεραιότητα της ιστορίας του έργου.

bash
# Προετοιμασία αλλαγών και commit
git add index.html style.css
git commit -m "Fix responsive layout on mobile devices"

# Προβολή λεπτομερειών commit
git log --oneline -3
git show HEAD

# Προετοιμασία όλων των αλλαγών και commit σε ένα βήμα
git commit -a -m "Update dependencies to latest versions"

Τα commits σχηματίζουν έναν κατευθυνόμενο ακυκλικό γράφο (DAG), όπου κάθε νέο commit αναφέρεται στο προηγούμενο. Αυτό επιτρέπει την πλοήγηση στην ιστορία, την ακύρωση αλλαγών και την ανάλυση της εξέλιξης της βάσης κώδικα. Η κατανόηση της δομής Git DAG — η βάση για προηγμένη εργασία με commits.

Πώς να κάνεις σωστά commit αλλαγών

Η διαδικασία commit στο Git αποτελείται από δύο στάδια: προσθήκη αλλαγών στο staging area (ευρετήριο) και δημιουργία commit. Το staging area επιτρέπει στον προγραμματιστή να επιλέξει ποιες αλλαγές θα εισαχθούν στο commit, ακόμα κι αν έχουν τροποποιηθεί πολλά αρχεία στον κατάλογο εργασίας.

Ο κανόνας ατομικότητας — η βασική αρχή ενός καλού commit. Κάθε commit πρέπει να περιέχει μία λογική αλλαγή. Αν ο προγραμματιστής διορθώνει ένα σφάλμα και αναδιαρθρώνει κώδικα — αυτά είναι δύο διαφορετικά commits. Τα ατομικά commits απλοποιούν την αναθεώρηση κώδικα, την αναίρεση αλλαγών και την ανάλυση ιστορίας.

Πριν κάνεις commit, αξίζει να ελέγξεις: αν έχουν μείνει στον κώδικα έξοδοι εντοπισμού σφαλμάτων, σχολιασμένα μπλοκ ή τυχαίες αλλαγές. Γι' αυτό χρησιμοποιείται η εντολή git diff --cached, που δείχνει τι ακριβώς θα εισαχθεί στο commit. Πρόσθετος έλεγχος μέσω git status εμφανίζει τη λίστα αρχείων στο staging area.

  • Έλεγξε τις αλλαγές — git diff --cached δείχνει τι εισάγεται στο commit
  • Έλεγξε την ποιότητα — ο κώδικας πρέπει να περνά από linter και tests πριν το commit
  • Γράψε μήνυμα — κατανοητή περιγραφή του σκοπού της αλλαγής
  • Έλεγξε το staged — git status επιβεβαιώνει τη λίστα αρχείων

Κανόνες γραφής μηνυμάτων commit

Το μήνυμα commit είναι η τεκμηρίωση της αλλαγής για μελλοντικούς προγραμματιστές. Ένα καλό μήνυμα απαντά στις ερωτήσεις: τι άλλαξε και γιατί. Η σύμβαση Conventional Commits (ομάδα Angular, 2016) έχει γίνει πρότυπο για πολλά έργα και καθορίζει τη μορφή: τύπος(τομέας): περιγραφή.

ΤύποςΣκοπόςΠαράδειγμα
featνέα λειτουργικότηταfeat(api): add user registration endpoint
fixδιόρθωση σφάλματοςfix(auth): resolve token refresh issue
refactorαναδιάρθρωση χωρίς αλλαγή συμπεριφοράςrefactor(core): extract payment validator
docsτεκμηρίωσηdocs(readme): update installation guide
testπροσθήκη teststest(cart): add unit tests for checkout

Ένα καλό μήνυμα commit αποτελείται από επικεφαλίδα (έως 50 χαρακτήρες) και σώμα (προαιρετικά, έως 72 χαρακτήρες ανά γραμμή). Η επικεφαλίδα γράφεται σε προστακτική έγκλιση: “Add” όχι “Added” ή “Adds”. Κεφαλαίο γράμμα και τελεία στο τέλος της επικεφαλίδας δεν χρησιμοποιούνται — αυτή είναι η διεθνής σύμβαση Git.

Κακό μήνυμα: “fix things” ή “update” — δεν φέρει πληροφορία. Σε ένα μήνα ο προγραμματιστής δεν θα μπορεί να καταλάβει τι ακριβώς άλλαξε και γιατί. Καλό μήνυμα: “fix(payment): handle timeout in stripe callback” — αμέσως ξεκάθαρο πού και τι διορθώθηκε.

Συχνά λάθη στα commits

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

Το δεύτερο πιο συχνό λάθος — κακό μήνυμα commit. Μηνύματα τύπου “fix”, “update”, “changes” ή “wip” δεν δίνουν πλαίσιο σε μελλοντικούς προγραμματιστές. Σε έξι μήνες κανείς δεν θα θυμάται τι ακριβώς διορθώθηκε. Ο κανόνας είναι απλός: φαντάσου ότι σε ένα χρόνο κοιτάς την ιστορία και προσπαθείς να βρεις μια συγκεκριμένη αλλαγή.

Τρίτο λάθος — commit μη μεταγλωττισμένου ή μη λειτουργικού κώδικα. Μετά το commit, ο κώδικας πρέπει τουλάχιστον να μεταγλωττίζεται. Μη σπασμένο build — βασική απαίτηση για κάθε commit σε κοινό branch. Γι' αυτό πριν το commit εκτελούνται build και tests.

Τέταρτο λάθος — commit με εμπιστευτικά δεδομένα. Κλειδιά API, κωδικοί πρόσβασης και token δεν πρέπει να εισέρχονται στην ιστορία Git. Αν ένα μυστικό έχει ήδη γίνει commit, δεν αρκεί απλώς να διαγραφεί σε ένα νέο commit — πρέπει να διαγραφεί από ολόκληρη την ιστορία μέσω git filter-branch ή BFG Repo-Cleaner.

Προηγμένες τεχνικές εργασίας με commits

Το Git παρέχει εργαλεία για τη διαχείριση της ιστορίας commits. Ένα από τα πιο χρήσιμα είναι το git commit --amend, που επιτρέπει τη συμπλήρωση του τελευταίου commit με νέες αλλαγές ή τη διόρθωση του μηνύματος. Είναι βολικό αν ο προγραμματιστής ξέχασε να συμπεριλάβει ένα αρχείο ή έκανε λάθος στο μήνυμα.

bash
# Διόρθωση τελευταίου μηνύματος commit
git commit --amend -m "fix(auth): correct token validation logic"

# Προσθήκη αρχείου που παραλείφθηκε στο τελευταίο commit
git add missed-file.txt
git commit --amend --no-edit

# Διαδραστικό rebase για τα τελευταία 3 commits
git rebase -i HEAD~3

Το Interactive rebase — ισχυρό εργαλείο για επανεγγραφή της ιστορίας. Επιτρέπει τη συγχώνευση commits (squash), αλλαγή μηνυμάτων (reword), αλλαγή σειράς (reorder) και διαγραφή commits (drop). Ωστόσο, το rebase αλλάζει την ιστορία, γι' αυτό εφαρμόζεται μόνο σε τοπικά commits που δεν έχουν αποσταλεί ακόμα στο απομακρυσμένο αποθετήριο.

Για την ακύρωση commits υπάρχουν δύο προσεγγίσεις. git revert δημιουργεί ένα νέο commit που ακυρώνει τις αλλαγές του προηγούμενου — ασφαλής τρόπος που διατηρεί την ιστορία. git reset διαγράφει commits από την ιστορία — επικίνδυνο αν τα commits έχουν ήδη αποσταλεί. Στην ομαδική ανάπτυξη χρησιμοποιείται μόνο git revert για ακύρωση δημοσιευμένων commits.

Συχνές Ερωτήσεις

Τι σημαίνει να κάνεις commit στο Git;

Κάνω commit σημαίνει να δημιουργήσεις ένα σημείο αποθήκευσης αλλαγών στο Git. Το commit καταγράφει την τρέχουσα κατάσταση αρχείων στην ιστορία του έργου με περιγραφή του τι και γιατί άλλαξε. Κάθε commit έχει μοναδικό αναγνωριστικό (hash SHA-1) και αποτελεί μέρος μιας αδιάσπαστης αλυσίδας αλλαγών.

Πόσο συχνά πρέπει να κάνεις commits στο Git;

Συνιστάται να κάνεις commits μετά από κάθε λογικά ολοκληρωμένη αλλαγή, ακόμα και μικρή. Βέλτιστη συχνότητα — 1 commit ανά εργασία ή διόρθωση. Δεν αξίζει να κάνεις commit κάθε 5 λεπτά, αλλά ούτε και να συσσωρεύεις αλλαγές για πολλές ημέρες χωρίς κανένα commit.

Τι είναι το ατομικό commit;

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

Πώς να ακυρώσεις ένα commit στο Git;

Για ακύρωση δημοσιευμένου commit χρησιμοποίησε git revert — δημιουργεί ένα νέο commit που ακυρώνει τις αλλαγές. Για τοπικά commits μπορείς να χρησιμοποιήσεις git reset HEAD~1, αλλά μόνο αν το commit δεν έχει ακόμα αποσταλεί. git revert — ασφαλής τρόπος για ομαδική εργασία.

Μπορεί να αλλάξει ένα ήδη δημιουργημένο commit;

Ναι, πριν από την αποστολή στο απομακρυσμένο αποθετήριο. Χρησιμοποίησε git commit --amend για αλλαγή του τελευταίου commit ή git rebase -i για αλλαγή πολλών commits. Μετά το push, η αλλαγή ιστορίας δεν συνιστάται — μπορεί να προκαλέσει προβλήματα σε άλλους προγραμματιστές αν έχουν ήδη στείλει τις αλλαγές τους.

Σύνοψη

  • Κάνω commit — αποθήκευση αλλαγών στο Git με περιγραφή διορθώσεων
  • Ατομικότητα — ένα commit = μία λογική αλλαγή
  • Μήνυμα — χρησιμοποίησε Conventional Commits: τύπος(τομέας): περιγραφή
  • Έλεγχος — ο κώδικας πρέπει να μεταγλωττίζεται και να περνά tests πριν το commit
  • Ασφάλεια — μην κάνεις commit μυστικά, χρησιμοποίησε .gitignore
  • Αλλαγή — amend για τελευταίο commit, rebase -i για πολλά
  • Ακύρωση — git revert για δημοσιευμένα, git reset για τοπικά

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης