Push — τι είναι, πώς λειτουργεί το git push και πότε χρειάζεται

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

Το να κάνετε push σημαίνει να στέλνετε τοπικά commits σε ένα απομακρυσμένο αποθετήριο Git, καθιστώντας τα διαθέσιμα για τα άλλα μέλη της ομάδας. Μετά το push, οι αλλαγές εμφανίζονται στο GitHub, GitLab ή Bitbucket. Σύμφωνα με το GitHub Octoverse 2024, καθημερινά γίνονται push πάνω από 10 εκατομμύρια commits στην πλατφόρμα. Git push είναι η βασική ενέργεια για τον συγχρονισμό της εργασίας σε μια κατανεμημένη ομάδα.

Κύρια σημεία

  • Push — αποστολή τοπικών commits στο απομακρυσμένο αποθετήριο
  • Μετά το push οι αλλαγές γίνονται ορατές σε όλη την ομάδα
  • Κύριες πλατφόρμες — GitHub, GitLab, Bitbucket
  • Ασφαλές push — μόνο σε feature κλάδους, όχι απευθείας στο main
  • Pre-push hooks — αυτόματος έλεγχος κώδικα πριν την αποστολή

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

Το Git push είναι μια εντολή που μεταφέρει commits από το τοπικό αποθετήριο στο απομακρυσμένο. Σε αντίθεση με το commit, που αποθηκεύει αλλαγές μόνο στον τοπικό υπολογιστή του προγραμματιστή, το push δημοσιεύει αυτές τις αλλαγές για ολόκληρη την ομάδα. Push είναι υποχρεωτικό βήμα πριν από τη δημιουργία Pull Request και την ανάπτυξη.

Η αρχιτεκτονική του Git προϋποθέτει ότι κάθε προγραμματιστής εργάζεται στο δικό του τοπικό αποθετήριο. Τα commits δημιουργούνται τοπικά και συσσωρεύονται μέχρι ο προγραμματιστής να αποφασίσει να τα κάνει push. Αυτό δίνει ελευθερία: μπορείτε να κάνετε πολλά τοπικά commits, να πειραματίζεστε και να ξαναγράφετε την ιστορία χωρίς να επηρεάζετε τους συναδέλφους.

bash
# Push στο origin remote, main κλάδο
git push origin main

# Push τρέχοντος κλάδου στο remote με upstream
git push -u origin feature/new-dashboard

# Push όλων των κλάδων με αντίστοιχα ονόματα
git push --all origin

# Force push με lease (ασφαλές force push)
git push --force-with-lease

Μετά το push, το απομακρυσμένο αποθετήριο ενημερώνει τα refs (αναφορές σε κλάδους) ώστε να δείχνουν στα νέα commits. Άλλοι προγραμματιστές μπορούν να λάβουν αυτές τις αλλαγές μέσω git pull ή git fetch. Αυτή ακριβώς η ανταλλαγή commits αποτελεί τη βάση της συνεργατικής ανάπτυξης.

Πώς λειτουργεί το git push

Η εντολή git push συγκρίνει τους τοπικούς και απομακρυσμένους κλάδους και μεταφέρει μόνο τα ελλείποντα commits. Το Git δεν στέλνει όλα τα αρχεία από την αρχή — μεταφέρει μόνο το delta, καθιστώντας το push γρήγορο ακόμα και σε μεγάλα αποθετήρια. Πρωτόκολλο Git χρησιμοποιεί smart transfer, που ελαχιστοποιεί τον όγκο των μεταφερόμενων δεδομένων.

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

ΕντολήΕνέργειαΠότε να χρησιμοποιείται
git pushτυπικό push σε tracked κλάδοκανονική αποστολή αλλαγών
git push -upush με ρύθμιση upstreamπρώτο push νέου κλάδου
git push --force-with-leaseασφαλές force pushμετά από rebase του δικού σας κλάδου
git push --forceαναγκαστικό pushμόνο αν είστε σίγουροι ότι δεν υπάρχουν συγκρούσεις
git push --deleteδιαγραφή απομακρυσμένου κλάδουκαθαρισμός μετά από συγχώνευση κλάδου

Η κατανόηση των απομακρυσμένων αποθετηρίων είναι το κλειδί για σωστό push. Συνήθως χρησιμοποιείται το origin — το προεπιλεγμένο όνομα του απομακρυσμένου αποθετηρίου. Η εντολή git remote -v εμφανίζει τη λίστα των απομακρυσμένων αποθετηρίων και των URL τους. Μπορούν να προστεθούν πολλά remote (π.χ. origin για το κύριο αποθετήριο και upstream για το fork).

Πότε να κάνετε push αλλαγών

Βασικός κανόνας: πρέπει να κάνετε push μετά από κάθε λογικά ολοκληρωμένο στάδιο εργασίας. Εάν ένας προγραμματιστής έχει ολοκληρώσει μια εργασία ή μέρος αυτής — είναι ώρα για push. Ωστόσο, το push ημιτελούς εργασίας που σπάει το build δεν συνιστάται. Λειτουργικό build είναι η ελάχιστη απαίτηση για push σε οποιονδήποτε κλάδο.

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

  • Μετά την ολοκλήρωση εργασίας — commit και push της τελικής λύσης στον feature κλάδο
  • Πριν φύγετε — push ημιτελούς εργασίας στον feature κλάδο (όχι στο main!)
  • Πριν δημιουργήσετε PR — βεβαιωθείτε ότι όλα τα commits έχουν γίνει push και είναι διαθέσιμα για review
  • Μετά από rebase — push με --force-with-lease στον δικό σας feature κλάδο

Κανόνες ασφαλούς push

Το ασφαλές push είναι ένα σύνολο κανόνων που αποτρέπουν την απώλεια δεδομένων και τις συγκρούσεις στην ομάδα. Ο πρώτος και πιο σημαντικός κανόνας: μην κάνετε ποτέ push απευθείας στον main ή master κλάδο, εκτός αν έχει ρυθμιστεί άμεση ανάπτυξη στο έργο. Στις σύγχρονες ομάδες, η προστασία του main κλάδου ρυθμίζεται σε επίπεδο GitHub branch protection.

Δεύτερος κανόνας: πριν από το push, συγχρονιστείτε με τον απομακρυσμένο κλάδο. Εκτελέστε git pull --rebase για να αποφύγετε το merge commit κατά τη συγχώνευση. Αυτό απλοποιεί την ιστορία και την καθιστά γραμμική. Εάν το push απορριφθεί — μην χρησιμοποιήσετε γυμνό force push, αλλά πρώτα ελέγξτε ποια commits εμφανίστηκαν στον απομακρυσμένο κλάδο.

Τρίτος κανόνας: ρυθμίστε pre-push hooks που εκτελούν αυτόματα τα τεστ και τον linter πριν από την αποστολή. Εάν τα τεστ αποτύχουν — το push μπλοκάρεται. Τέτοια hooks ρυθμίζονται μέσω Husky ή Git hooks (αρχείο pre-push στο .git/hooks).

Τέταρτος κανόνας: μην κάνετε push μεγάλα δυαδικά αρχεία. Το Git δεν είναι σχεδιασμένο για αποθήκευση δυαδικών τεχνουργημάτων — διογκώνουν το αποθετήριο και επιβραδύνουν τις λειτουργίες. Για μεγάλα αρχεία χρησιμοποιείται το Git LFS (Large File Storage). Εάν ένα δυαδικό αρχείο έχει ήδη γίνει push και έχει εισέλθει στην ιστορία, πρέπει να αφαιρεθεί μέσω git filter-branch.

Τι να κάνετε αν το push απέτυχε

Η πιο συχνή αιτία αποτυχημένου push — ο απομακρυσμένος κλάδος περιέχει commits που δεν υπάρχουν τοπικά. Αυτό συμβαίνει όταν ένας άλλος προγραμματιστής έχει κάνει push τις αλλαγές του στον ίδιο κλάδο. Λύση: εκτελέστε git pull, επιλύστε πιθανές συγκρούσεις και επαναλάβετε το push.

bash
# Push απορρίφθηκε — πρώτα fetch και rebase
git fetch origin
git rebase origin/main
# Επίλυση συγκρούσεων, στη συνέχεια:
git push --force-with-lease

# Ή απλά συγχώνευση απομακρυσμένων αλλαγών
git pull origin main
git push

Δεύτερη αιτία — έλλειψη δικαιωμάτων εγγραφής στον κλάδο. Εάν ο main κλάδος προστατεύεται από κανόνα branch protection, τα απευθείας pushes απαγορεύονται. Λύση: κάντε push σε feature κλάδο και δημιουργήστε Pull Request. Οι ρυθμίσεις προστασίας συνήθως διαχειρίζονται μέσω GitHub settings ή GitLab protected branches.

Τρίτη αιτία — προβλήματα αυθεντικοποίησης. Παλιά διαπιστευτήρια, μετάβαση σε SSH ή αλλαγή personal access token. Λύση: ελέγξτε το remote URL (git remote -v) και ενημερώστε τα διαπιστευτήρια. Από το 2021, η GitHub κατήργησε την αυθεντικοποίηση με κωδικό για HTTPS — χρησιμοποιείται προσωπικό token ή κλειδί SSH.

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

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

Το να κάνετε push σημαίνει αποστολή τοπικών commits από το αποθετήριο του προγραμματιστή σε έναν απομακρυσμένο διακομιστή (GitHub, GitLab). Μετά το push, οι αλλαγές γίνονται διαθέσιμες στην ομάδα, εμφανίζονται στο Pull Request και μπορούν να αναπτυχθούν. Push είναι το τελικό στάδιο της τοπικής εργασίας με κώδικα πριν από την ομαδική συνεργασία.

Ποια είναι η διαφορά μεταξύ push και commit;

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

Τι να κάνετε αν το git push απορριφθεί;

Το push απορρίπτεται εάν ο απομακρυσμένος κλάδος περιέχει commits που δεν υπάρχουν τοπικά. Λύση: εκτελέστε git pull (ή git fetch + git rebase), συγχωνεύστε τις αλλαγές και επαναλάβετε το push. Εάν εργάζεστε στον δικό σας feature κλάδο και είστε σίγουροι για τις αλλαγές, χρησιμοποιήστε git push --force-with-lease.

Μπορεί να ακυρωθεί ένα push που έχει ήδη γίνει;

Ναι, αλλά με προσοχή. Χρησιμοποιήστε git revert <commit-hash> — δημιουργεί ένα commit που αντιστρέφει τις αλλαγές. Στη συνέχεια, κάντε push το νέο commit. Εάν πρέπει να αφαιρέσετε commits από την ιστορία, χρησιμοποιήστε git reset + git push --force-with-lease, αλλά μόνο στον δικό σας feature κλάδο. git revert είναι η ασφαλής επιλογή για κοινόχρηστους κλάδους.

Γιατί είναι σημαντικό να κάνετε push καθημερινά;

Το τακτικό push αποτρέπει την απώλεια δεδομένων σε περίπτωση βλάβης του τοπικού υπολογιστή, μειώνει τις συγκρούσεις κατά τη συγχώνευση και παρέχει στην ομάδα ορατότητα της προόδου. Εάν ένας προγραμματιστής δεν κάνει push για μια εβδομάδα, οι αλλαγές του μπορεί να αποκλίνουν σημαντικά από τον main κλάδο, οδηγώντας σε περίπλοκες συγκρούσεις κατά το merge.

Σύνοψη

  • Push — αποστολή τοπικών commits στο απομακρυσμένο αποθετήριο για την ομάδα
  • Διαφορά από commit — commit αποθηκεύει τοπικά, push δημοσιεύει στον διακομιστή
  • Προστασία main — push μόνο σε feature κλάδους, στο main μέσω PR
  • Force push — χρησιμοποιήστε μόνο με --force-with-lease σε δικούς σας κλάδους
  • Έλεγχοι pre-push — τεστ και linters μέσω Git hooks ή Husky
  • Συχνότητα — push μετά από κάθε λογικά ολοκληρωμένη αλλαγή
  • Προβλήματα — όταν το push απορρίπτεται, πρώτα pull ή rebase, μετά ξανά

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

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

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

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