Απομακρυσμένο αποθετήριο

7 λεπτά

Πίνακας περιεχομένων


1 — Τοπικό αποθετήριο έναντι απομακρυσμένου αποθετηρίου

Μέχρι εδώ, όλη η εργασία σας ζούσε στον υπολογιστή σας (τοπικό αποθετήριο). Ένα απομακρυσμένο αποθετήριο (remote) είναι ένα αντίγραφο που φιλοξενείται σε έναν διακομιστή (GitHub, GitLab, Bitbucket…), προσβάσιμο από όλη την ομάδα.

Τοπικό αποθετήριοΑπομακρυσμένο αποθετήριο
Πού;Ο υπολογιστής σαςΈνας διακομιστής (GitHub…)
Για τι;Εργασία, commitsΚοινοποίηση, αντίγραφο ασφαλείας, συνεργασία
ΠρόσβασηΜόνο εσείςΌλη η ομάδα

Το απομακρυσμένο αποθετήριο παίζει τρεις ρόλους: αντίγραφο ασφαλείας (ο κώδικάς σας επιβιώνει από μια βλάβη δίσκου), κοινοποίηση (η ομάδα έχει πρόσβαση στον ίδιο κώδικα) και σημείο συνάντησης (βάση της συνεργασίας και του CI/CD).

↑ Επιστροφή στην αρχή


2 — Σύνδεση ενός απομακρυσμένου αποθετηρίου

Για να συνδέσετε το τοπικό αποθετήριό σας με ένα απομακρυσμένο, του προσθέτετε μια αναφορά που κατά σύμβαση ονομάζεται origin.

bash
# Προσθήκη του απομακρυσμένου αποθετηρίου με όνομα "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.

✅ Δείτε μια λύση
bash
git remote add origin https://github.com/moi/projet.git

↑ Επιστροφή στην αρχή


3 — Ώθηση των αλλαγών

Ώθηση (push) σημαίνει αποστολή των τοπικών commits σας προς το απομακρυσμένο αποθετήριο.

bash
# Πρώτο 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, εγκαθιστώντας την παρακολούθηση.

✅ Δείτε μια λύση
bash
git push -u origin main

↑ Επιστροφή στην αρχή


4 — Ανάκτηση των αλλαγών

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

bash
# Ανάκτηση ΚΑΙ συγχώνευση των απομακρυσμένων αλλαγών
git pull

# Ανάκτηση ΧΩΡΙΣ συγχώνευση (για να επιθεωρήσετε πρώτα)
git fetch
ΕντολήΑποτέλεσμα
git fetchΚατεβάζει τις απομακρυσμένες καινοτομίες, χωρίς να τροποποιήσει την εργασία σας
git mergeΣυγχωνεύει ό,τι ανακτήθηκε στον κλάδο σας
git pullfetch + merge σε μία εντολή

Καλή συνήθεια: κάντε git pull πριν ξεκινήσετε να εργάζεστε και πριν ωθήσετε. Αυτό αποφεύγει τις περισσότερες συγκρούσεις, γιατί ξεκινάτε πάντα από την πιο πρόσφατη έκδοση.

🔧 Μίνι-άσκηση — Ποια εντολή ανακτά τα απομακρυσμένα commits χωρίς να τα συγχωνεύσει στον κλάδο σας, ώστε να τα επιθεωρήσετε πρώτα;

✅ Δείτε μια λύση
bash
git fetch

↑ Επιστροφή στην αρχή


5 — Κλωνοποίηση ενός αποθετηρίου

Κλωνοποίηση (clone) σημαίνει δημιουργία ενός πλήρους τοπικού αντιγράφου ενός υπάρχοντος απομακρυσμένου αποθετηρίου — τυπικά για να ενταχθείτε σε ένα έργο.

bash
# Κλωνοποίηση ενός αποθετηρίου (δημιουργεί φάκελο + κατεβάζει όλο το ιστορικό)
git clone https://github.com/utilisateur/mon-projet.git

# Κλωνοποίηση σε φάκελο με συγκεκριμένο όνομα
git clone https://github.com/utilisateur/mon-projet.git mon-dossier

Το git clone κάνει τα πάντα με μία κίνηση:

  1. Κατεβάζει ολόκληρο το αποθετήριο (αρχεία + ιστορικό).
  2. Δημιουργεί έναν τοπικό φάκελο.
  3. Διαμορφώνει αυτόματα το origin προς το κλωνοποιημένο URL.
git init + remote addgit clone
Για δημοσίευση ενός έργου ήδη υπάρχοντος τοπικάΓια ανάκτηση ενός έργου ήδη υπάρχοντος απομακρυσμένα

Σύνοψη: κλωνοποιείτε όταν το έργο υπάρχει ήδη στο διαδίκτυο· κάνετε init + remote add + push όταν ξεκινάτε από ένα τοπικό έργο προς δημοσίευση.

🔧 Μίνι-άσκηση — Γράψτε την εντολή που κλωνοποιεί το αποθετήριο https://github.com/moi/projet.git σε έναν τοπικό φάκελο με όνομα mon-dossier.

✅ Δείτε μια λύση
bash
git clone https://github.com/moi/projet.git mon-dossier

↑ Επιστροφή στην αρχή


6 — Η πλήρης συνεργατική ροή

Ιδού ο πλήρης καθημερινός κύκλος της συνεργατικής εργασίας με ένα απομακρυσμένο αποθετήριο.

ΒήμαΕντολήΣκοπός
1git pullΕκκίνηση από την τελευταία έκδοση
2git add + git commitΚαταγραφή της εργασίας τοπικά
3git pullΑνάκτηση όσων άλλαξαν εν τω μεταξύ
4git pushΔημοσίευση των commits σας

Αυτή η ροή pull → εργασία → commit → pull → push είναι η βασική ρουτίνα. Στην επιχείρηση, προστίθενται οι Pull Requests και η αναθεώρηση κώδικα — αυτό είναι το αντικείμενο της ενότητας 02 (Προχωρημένο Git και GitHub).

↑ Επιστροφή στην αρχή


7 — Κουίζ — Απομακρυσμένο αποθετήριο

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.

↑ Επιστροφή στην αρχή


8 — Πρακτική — Δημοσίευση του αποθετηρίου σας στο GitHub

Οδηγία

Δημοσιεύστε το τοπικό αποθετήριο που δημιουργήθηκε στο μάθημα 04 στο GitHub, έπειτα προσομοιώστε μια συνεργασία κλωνοποιώντας το αλλού.


Διόρθωση — Αναμενόμενη ακολουθία εντολών

bash
# --- Πλευρά υπάρχοντος τοπικού έργου ---

# 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 μόνοι σας. Ακριβώς αυτό συμβαίνει στην ομάδα, με τη διαφορά ότι τα δύο αντίγραφα βρίσκονται σε διαφορετικούς υπολογιστές.

↑ Επιστροφή στην αρχή


9 — Σύνοψη

Σημεία που πρέπει να θυμάστε

  1. Απομακρυσμένο αποθετήριο = αντίγραφο σε διακομιστή (GitHub): αντίγραφο ασφαλείας + κοινοποίηση + συνεργασία.
  2. git remote add origin <url> συνδέει το τοπικό με το απομακρυσμένο.
  3. git push στέλνει· git pull (= fetch + merge) λαμβάνει.
  4. git clone ανακτά ένα υπάρχον αποθετήριο και διαμορφώνει αυτόματα το origin.
  5. Καθημερινή ρουτίνα: pull → εργασία → commit → pull → push.

Η συνέχεια

Ενότητα 02 — Προχωρημένο Git και GitHub: Pull Requests, αναθεώρηση κώδικα, διαχείριση συγκρούσεων στην ομάδα και επαγγελματικές ροές εργασίας.

↑ Επιστροφή στην αρχή


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

Μάθημα δημιουργημένο από τον Dr. Haythem REHOUMA — Ανάπτυξη και ανάπτυξη λύσεων δεδομένων