Μέχρι εδώ, όλη η εργασία σας ζούσε στον υπολογιστή σας (τοπικό αποθετήριο). Ένα απομακρυσμένο αποθετήριο (remote) είναι ένα αντίγραφο που φιλοξενείται σε έναν διακομιστή (GitHub, GitLab, Bitbucket…), προσβάσιμο από όλη την ομάδα.
| Τοπικό αποθετήριο | Απομακρυσμένο αποθετήριο | |
|---|---|---|
| Πού; | Ο υπολογιστής σας | Ένας διακομιστής (GitHub…) |
| Για τι; | Εργασία, commits | Κοινοποίηση, αντίγραφο ασφαλείας, συνεργασία |
| Πρόσβαση | Μόνο εσείς | Όλη η ομάδα |
Το απομακρυσμένο αποθετήριο παίζει τρεις ρόλους: αντίγραφο ασφαλείας (ο κώδικάς σας επιβιώνει από μια βλάβη δίσκου), κοινοποίηση (η ομάδα έχει πρόσβαση στον ίδιο κώδικα) και σημείο συνάντησης (βάση της συνεργασίας και του CI/CD).
Για να συνδέσετε το τοπικό αποθετήριό σας με ένα απομακρυσμένο, του προσθέτετε μια αναφορά που κατά σύμβαση ονομάζεται origin.
# Προσθήκη του απομακρυσμένου αποθετηρίου με όνομα "origin"
git remote add origin https://github.com/utilisateur/mon-projet.git
# Επαλήθευση των διαμορφωμένων απομακρυσμένων αποθετηρίων
git remote -v| Εντολή | Αποτέλεσμα |
|---|---|
git remote add origin <url> | Συνδέει το τοπικό με το απομακρυσμένο (ψευδώνυμο origin) |
git remote -v | Εμφανίζει τα απομακρυσμένα και τα URL τους |
git remote remove origin | Αφαιρεί τη σύνδεση |
Το
originείναι μόνο ένα όνομα κατά σύμβαση για «το κύριο απομακρυσμένο αποθετήριο». Θα μπορούσατε να το ονομάσετε αλλιώς, αλλά όλοι χρησιμοποιούνorigin— κρατήστε αυτή τη σύμβαση.
🔧 Μίνι-άσκηση — Γράψτε την εντολή που συνδέει το τοπικό αποθετήριό σας με το απομακρυσμένο αποθετήριο https://github.com/moi/projet.git με το ψευδώνυμο origin.
git remote add origin https://github.com/moi/projet.gitΏθηση (push) σημαίνει αποστολή των τοπικών commits σας προς το απομακρυσμένο αποθετήριο.
# Πρώτο push: συνδέουμε τον τοπικό κλάδο με τον απομακρυσμένο με -u
git push -u origin main
# Τις επόμενες φορές, ένα απλό push αρκεί
git push| Εντολή | Πότε να τη χρησιμοποιήσετε |
|---|---|
git push -u origin main | Πρώτο push ενός κλάδου (εγκαθιστά την παρακολούθηση) |
git push | Όλα τα επόμενα push |
Η επιλογή
-u(ή--set-upstream) χρησιμεύει μόνο μία φορά ανά κλάδο: συνδέει τον τοπικό σας κλάδο με τον απομακρυσμένο δίδυμό του. Έπειτα, ταgit pushκαιgit pullξέρουν μόνα τους τι να κάνουν.
🔧 Μίνι-άσκηση — Γράψτε την εντολή του πρώτου push του κλάδου main προς το origin, εγκαθιστώντας την παρακολούθηση.
git push -u origin mainΌταν ένας συνάδελφος ωθεί κώδικα, πρέπει να ανακτήσετε τις αλλαγές του για να παραμείνετε ενημερωμένοι.
# Ανάκτηση ΚΑΙ συγχώνευση των απομακρυσμένων αλλαγών
git pull
# Ανάκτηση ΧΩΡΙΣ συγχώνευση (για να επιθεωρήσετε πρώτα)
git fetch| Εντολή | Αποτέλεσμα |
|---|---|
git fetch | Κατεβάζει τις απομακρυσμένες καινοτομίες, χωρίς να τροποποιήσει την εργασία σας |
git merge | Συγχωνεύει ό,τι ανακτήθηκε στον κλάδο σας |
git pull | fetch + merge σε μία εντολή |
Καλή συνήθεια: κάντε
git pullπριν ξεκινήσετε να εργάζεστε και πριν ωθήσετε. Αυτό αποφεύγει τις περισσότερες συγκρούσεις, γιατί ξεκινάτε πάντα από την πιο πρόσφατη έκδοση.
🔧 Μίνι-άσκηση — Ποια εντολή ανακτά τα απομακρυσμένα commits χωρίς να τα συγχωνεύσει στον κλάδο σας, ώστε να τα επιθεωρήσετε πρώτα;
git fetchΚλωνοποίηση (clone) σημαίνει δημιουργία ενός πλήρους τοπικού αντιγράφου ενός υπάρχοντος απομακρυσμένου αποθετηρίου — τυπικά για να ενταχθείτε σε ένα έργο.
# Κλωνοποίηση ενός αποθετηρίου (δημιουργεί φάκελο + κατεβάζει όλο το ιστορικό)
git clone https://github.com/utilisateur/mon-projet.git
# Κλωνοποίηση σε φάκελο με συγκεκριμένο όνομα
git clone https://github.com/utilisateur/mon-projet.git mon-dossierΤο git clone κάνει τα πάντα με μία κίνηση:
origin προς το κλωνοποιημένο URL.git init + remote add | git clone |
|---|---|
| Για δημοσίευση ενός έργου ήδη υπάρχοντος τοπικά | Για ανάκτηση ενός έργου ήδη υπάρχοντος απομακρυσμένα |
Σύνοψη: κλωνοποιείτε όταν το έργο υπάρχει ήδη στο διαδίκτυο· κάνετε
init+remote add+pushόταν ξεκινάτε από ένα τοπικό έργο προς δημοσίευση.
🔧 Μίνι-άσκηση — Γράψτε την εντολή που κλωνοποιεί το αποθετήριο https://github.com/moi/projet.git σε έναν τοπικό φάκελο με όνομα mon-dossier.
git clone https://github.com/moi/projet.git mon-dossierΙδού ο πλήρης καθημερινός κύκλος της συνεργατικής εργασίας με ένα απομακρυσμένο αποθετήριο.
| Βήμα | Εντολή | Σκοπός |
|---|---|---|
| 1 | git pull | Εκκίνηση από την τελευταία έκδοση |
| 2 | git add + git commit | Καταγραφή της εργασίας τοπικά |
| 3 | git pull | Ανάκτηση όσων άλλαξαν εν τω μεταξύ |
| 4 | git push | Δημοσίευση των commits σας |
Αυτή η ροή pull → εργασία → commit → pull → push είναι η βασική ρουτίνα. Στην επιχείρηση, προστίθενται οι Pull Requests και η αναθεώρηση κώδικα — αυτό είναι το αντικείμενο της ενότητας 02 (Προχωρημένο Git και GitHub).
Question 1 : Τι είναι ένα απομακρυσμένο αποθετήριο;
a) Ένας τοπικός κλάδος
b) Ένα αντίγραφο του αποθετηρίου που φιλοξενείται σε διακομιστή, προσβάσιμο από την ομάδα
c) Ένα αρχείο .gitignore
d) Ένα ιδιαίτερο commit
✅ Απάντηση: b) — Το απομακρυσμένο αποθετήριο (στο GitHub, για παράδειγμα) χρησιμεύει ως αντίγραφο ασφαλείας, σημείο κοινοποίησης και βάση της συνεργασίας.
Question 2 : Τι δηλώνει συνήθως το origin;
a) Το πρώτο commit του έργου
b) Το συμβατικό όνομα του κύριου απομακρυσμένου αποθετηρίου
c) Τον προεπιλεγμένο κλάδο
d) Έναν τύπο σύγκρουσης
✅ Απάντηση: b) — Το origin είναι το συμβατικό ψευδώνυμο για το κύριο απομακρυσμένο αποθετήριο που συνδέεται με το τοπικό.
Question 3 : Ποια εντολή στέλνει τα τοπικά σας commits προς το απομακρυσμένο;
a) git pull
b) git push
c) git clone
d) git fetch
✅ Απάντηση: b) — Το git push στέλνει τα τοπικά commits προς το απομακρυσμένο αποθετήριο. Τα git pull/fetch κάνουν το αντίστροφο.
Question 4 : Ποια είναι η διαφορά ανάμεσα στο git fetch και το git pull;
a) Καμία, είναι συνώνυμα
b) Το fetch κατεβάζει χωρίς συγχώνευση· το pull κατεβάζει και συγχωνεύει
c) Το pull διαγράφει το ιστορικό
d) Το fetch στέλνει τα commits
✅ Απάντηση: b) — git pull = git fetch + git merge. Το fetch μόνο του επιτρέπει να επιθεωρήσετε πριν συγχωνεύσετε.
Question 5 : Σε ποια περίπτωση χρησιμοποιείτε git clone;
a) Για δημοσίευση ενός κενού τοπικού έργου
b) Για ανάκτηση ενός πλήρους αντιγράφου ενός αποθετηρίου που υπάρχει ήδη απομακρυσμένα
c) Για δημιουργία ενός κλάδου
d) Για επίλυση μιας σύγκρουσης
✅ Απάντηση: b) — Το git clone αντιγράφει ένα υπάρχον απομακρυσμένο αποθετήριο τοπικά και διαμορφώνει αυτόματα το origin.
Δημοσιεύστε το τοπικό αποθετήριο που δημιουργήθηκε στο μάθημα 04 στο GitHub, έπειτα προσομοιώστε μια συνεργασία κλωνοποιώντας το αλλού.
# --- Πλευρά υπάρχοντος τοπικού έργου ---
# 1. Δημιουργία ΚΕΝΟΥ αποθετηρίου στο github.com (μέσω της διεπαφής ιστού)
# → λαμβάνετε ένα URL: https://github.com/vous/mon-premier-depot.git
# 2. Σύνδεση του τοπικού με το απομακρυσμένο
git remote add origin https://github.com/vous/mon-premier-depot.git
git remote -v
# 3. Πρώτη ώθηση
git push -u origin main
# --- Προσομοίωση συναδέλφου που εντάσσεται στο έργο ---
# 4. Κλωνοποίηση αλλού (άλλος φάκελος)
cd ..
git clone https://github.com/vous/mon-premier-depot.git copie-collegue
cd copie-collegue
# 5. Τροποποίηση, commit, ώθηση
echo "Συνεισφορά του συναδέλφου" >> README.md
git add README.md
git commit -m "Προσθέτει μια συνεισφορά"
git push
# --- Επιστροφή στο αρχικό έργο ---
# 6. Ανάκτηση της συνεισφοράς
cd ../mon-premier-depot
git pullΑναμενόμενο αποτέλεσμα: μετά το τελικό git pull, το αρχείο README.md του αρχικού έργου περιέχει τη γραμμή που πρόσθεσε ο «συνάδελφος». Ο κύκλος push / clone / push / pull έχει κλείσει.
Μόλις πραγματοποιήσατε μια πλήρη συνεργασία Git μόνοι σας. Ακριβώς αυτό συμβαίνει στην ομάδα, με τη διαφορά ότι τα δύο αντίγραφα βρίσκονται σε διαφορετικούς υπολογιστές.
git remote add origin <url> συνδέει το τοπικό με το απομακρυσμένο.git push στέλνει· git pull (= fetch + merge) λαμβάνει.git clone ανακτά ένα υπάρχον αποθετήριο και διαμορφώνει αυτόματα το origin.pull → εργασία → commit → pull → push.Ενότητα 02 — Προχωρημένο Git και GitHub: Pull Requests, αναθεώρηση κώδικα, διαχείριση συγκρούσεων στην ομάδα και επαγγελματικές ροές εργασίας.
Με την επιφύλαξη παντός δικαιώματος. Οποιαδήποτε αναπαραγωγή, διάδοση, χρήση ή προσαρμογή αυτού του μαθήματος, εν όλω ή εν μέρει, απαγορεύεται αυστηρά χωρίς την προηγούμενη γραπτή άδεια του Dr. Haythem REHOUMA.
Μάθημα δημιουργημένο από τον Dr. Haythem REHOUMA — Ανάπτυξη και ανάπτυξη λύσεων δεδομένων