---
sort: 2
---

# Git & Version Control (Δουλεύοντας σαν επαγγελματίας)

## **Κεφάλαιο 1: Τι είναι το Version Control και γιατί είναι η πιο σημαντική σου δεξιότητα;**

Φαντάσου το εξής σενάριο: δουλεύεις για ώρες πάνω στο project σου. Έχεις φτιάξει ένα πανέμορφο μενού πλοήγησης. Αποφασίζεις να δοκιμάσεις μια "μικρή αλλαγή"... και ξαφνικά, όλη η σελίδα καταρρέει. Τίποτα δεν είναι στη θέση του. Πατάς Undo (Αναίρεση) μερικές φορές, αλλά έχεις ήδη σώσει το αρχείο. Πανικός. Πώς γυρνάς πίσω στην κατάσταση που όλα δούλευαν;

**Η παλιά, χαοτική μέθοδος**

Χωρίς κάποιο σύστημα, η μόνη λύση είναι η χειροκίνητη αποθήκευση αντιγράφων. Το έχεις κάνει σίγουρα στο παρελθόν με εργασίες ή άλλα αρχεία. Ο φάκελος του project σου αρχίζει να μοιάζει κάπως έτσι:
*   `project_v1/`
*   `project_v2_doyleyei_to_menou/`
*   `project_final/`
*   `project_FINAL_FINAL/`
*   `project_teliko_alithino_swear.zip`

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

**Η επαγγελματική λύση: Version Control System (VCS)**

Ένα **Σύστημα Ελέγχου Εκδόσεων (Version Control System - VCS)** είναι ακριβώς αυτό που λέει το όνομά του: ένα σύστημα που παρακολουθεί και διαχειρίζεται τις αλλαγές στα αρχεία σου με την πάροδο του χρόνου.

Φαντάσου το σαν τα "save points" σε ένα video game. Αντί να έχεις ένα μόνο αρχείο αποθήκευσης που αντικαθιστάς συνεχώς, ένα VCS σου επιτρέπει να δημιουργείς πολλαπλά, μόνιμα "σημεία ελέγχου" (checkpoints) της δουλειάς σου. Κάθε τέτοιο σημείο ελέγχου (που στον κόσμο του Git ονομάζεται **commit**) αποθηκεύει μια "φωτογραφία" ολόκληρου του project σου τη δεδομένη στιγμή. Έτσι, μπορείς ανά πάσα στιγμή να γυρίσεις πίσω σε οποιοδήποτε προηγούμενο commit, σαν να έχεις μια μηχανή του χρόνου για τον κώδικά σου!

**Και εδώ έρχεται το Git...**

Το **Git** είναι το πιο δημοφιλές Version Control System στον κόσμο, με διαφορά. Δημιουργήθηκε από τον Linus Torvalds (τον ίδιο άνθρωπο που δημιούργησε το Linux) για να διαχειριστεί την ανάπτυξη ενός από τα μεγαλύτερα software projects στον πλανήτη.

> **Σημαντική διάκριση:** Το **Git** είναι το *πρόγραμμα* που τρέχει στον υπολογιστή σου για να παρακολουθεί τις αλλαγές. Δεν πρέπει να συγχέεται με το **GitHub**, το οποίο θα δούμε αργότερα.

**Γιατί το Git είναι η "Υπερδύναμή" σου;**

Η εκμάθηση του Git σου δίνει τέσσερα τεράστια πλεονεκτήματα:

1.  **Ένα δίχτυ ασφαλείας και μια μηχανή του χρόνου:**
    Έκανες ένα λάθος; Κανένα πρόβλημα. Μπορείς να επιστρέψεις στην ακριβή έκδοση του project σου όπως ήταν χθες, ή την προηγούμενη εβδομάδα, ή πριν από πέντε λεπτά. Το Git καταγράφει κάθε αλλαγή και σου επιτρέπει να "ταξιδέψεις" στην ιστορία του project σου.

2.  **Πειραματισμός χωρίς φόβο (Branching):**
    Θέλεις να δοκιμάσεις μια νέα, ριζοσπαστική ιδέα, αλλά φοβάσαι μην "χαλάσεις" αυτό που ήδη δουλεύει; Το Git σου επιτρέπει να δημιουργήσεις μια "διακλάδωση" (ένα **branch**). Αυτό είναι σαν να δημιουργείς ένα παράλληλο σύμπαν του project σου. Μπορείς να πειραματιστείς ελεύθερα σε αυτό το branch, και αν η ιδέα σου πετύχει, μπορείς να "συγχωνεύσεις" τις αλλαγές σου πίσω στο κύριο project. Αν αποτύχει, απλά πετάς το branch χωρίς να έχει επηρεαστεί καθόλου η βασική σου δουλειά.

3.  **Ομαδική εργασία και συνεργασία:**
    Αυτό είναι το σημείο όπου το Git πραγματικά λάμπει. Επιτρέπει σε δεκάδες (ή και χιλιάδες) προγραμματιστές να δουλεύουν ταυτόχρονα στο ίδιο project. Ο καθένας μπορεί να δουλεύει στο δικό του branch, και το Git βοηθάει στη συγχώνευση όλων αυτών των αλλαγών με έναν οργανωμένο τρόπο, επισημαίνοντας τυχόν "συγκρούσεις" (conflicts), δηλαδή περιπτώσεις όπου δύο άτομα άλλαξαν την ίδια γραμμή κώδικα.

4.  **Το βιογραφικό σου:**
    Συνδυάζοντας το Git με πλατφόρμες όπως το **GitHub** ή το **GitLab**, μπορείς να φιλοξενήσεις τον κώδικά σου online. Ένας δημόσιος λογαριασμός GitHub λειτουργεί σαν το portfolio σου. Οι εργοδότες μπορούν να δουν τα projects σου, πώς γράφεις κώδικα και πώς χρησιμοποιείς το Git – μια από τις πιο περιζήτητες δεξιότητες στη σημερινή αγορά εργασίας.

---

**Συνοψίζοντας:** Το Git δεν είναι απλά ένα εργαλείο, είναι μια θεμελιώδης πρακτική του σύγχρονου software development. Σου δίνει ασφάλεια, ελευθερία και τη δυνατότητα να συνεργαστείς αποτελεσματικά.

---

## **Κεφάλαιο 2: Οι Βασικές Εντολές Git (Δημιουργία του πρώτου "Save Point")**

Η αλληλεπίδραση με το Git γίνεται κυρίως μέσω εντολών στο terminal. Στην αρχή μπορεί να φαίνονται λίγο τρομακτικές, αλλά στην πραγματικότητα, στην καθημερινή σου εργασία θα χρησιμοποιείς ξανά και ξανά τις ίδιες 4-5 βασικές εντολές.

Πρώτα, όμως, πρέπει να βεβαιωθούμε ότι το Git είναι εγκατεστημένο.

**Βήμα 0: Εγκατάσταση & ρύθμιση του Git**

1.  **Έλεγχος εγκατάστασης:**
    Άνοιξε το terminal (Terminal σε Mac/Linux, Git Bash σε Windows) και γράψε την παρακάτω εντολή:
    ```bash
    git --version
    ```
    Αν λάβεις ως απάντηση μια έκδοση του Git (π.χ., `git version 2.37.1`), τότε είσαι έτοιμος. Αν λάβεις μήνυμα λάθους ότι η εντολή δεν αναγνωρίζεται, πρέπει να το εγκαταστήσεις από την επίσημη σελίδα του: [https://git-scm.com/downloads](https://git-scm.com/downloads). (Για χρήστες Windows, η εγκατάσταση του "Git for Windows" θα εγκαταστήσει και το "Git Bash", ένα ειδικό terminal φιλικό προς τις εντολές Git, το οποίο προτείνεται να χρησιμοποιείς).

2.  **Αρχική ρύθμιση:**
    Το Git θέλει να ξέρει "ποιος" κάνει την κάθε αλλαγή. Πρέπει να του πεις το όνομα και το email σου. Αυτές οι εντολές χρειάζεται να τις τρέξεις **μόνο μία φορά** στον υπολογιστή σου.
    ```bash
    git config --global user.name "Your Name"
    git config --global user.email "your.email@example.com"
    ```
    Αντικατάστησε το `"Your Name"` και `"your.email@example.com"` με τα δικά σου στοιχεία.

**Το βασικό τρίπτυχο του Git: `init`, `add`, `commit`**

Ας φτιάξουμε ένα μικρό project για να δούμε πώς λειτουργεί το Git στην πράξη.

**Βήμα 1: `git init` - Δημιουργία αποθετηρίου**

Αυτή η εντολή "ξυπνάει" το Git και του λέει να αρχίσει να παρακολουθεί έναν συγκεκριμένο φάκελο.

1.  Άνοιξε το terminal.
2.  Δημιούργησε έναν νέο φάκελο για το project μας και μπες μέσα σε αυτόν:
    ```bash
    mkdir my-first-git-project
    cd my-first-git-project
    ```
3.  Τώρα, μέσα από τον φάκελο `my-first-git-project`, τρέξε την εντολή-κλειδί:
    ```bash
    git init
    ```
    Θα δεις ένα μήνυμα του τύπου: `Initialized empty Git repository in /path/to/your/my-first-git-project/.git/`. Συγχαρητήρια! Μόλις δημιούργησες το πρώτο σου **Git repository** (αποθετήριο). Το Git δημιούργησε έναν κρυφό φάκελο με όνομα `.git` μέσα στο project σου. Εκεί μέσα κρατάει όλη την "ιστορία" και τις "φωτογραφίες" του project σου. Ποτέ μην πειράξεις αυτόν τον φάκελο χειροκίνητα!

**Βήμα 2: `git add` - Προετοιμασία αρχείων για αποθήκευση**

Τώρα ας δημιουργήσουμε ένα αρχείο. Μπορείς να το κάνεις είτε μέσα από τον VS Code είτε με το terminal.

1.  Δημιούργησε ένα αρχείο `index.html` μέσα στον φάκελο του project και γράψε μέσα του κάτι απλό:
    ```html
    <h1>My First Git Project</h1>
    ```
2.  Αν γυρίσεις στο terminal και τρέξεις την εντολή `git status`, το Git θα σου πει την κατάσταση του project:
    ```bash
    git status
    ```
    Θα δεις μια απάντηση που λέει ότι έχεις **"Untracked files"** (μη παρακολουθούμενα αρχεία) και θα σου δείξει το `index.html` με κόκκινο χρώμα. Αυτό σημαίνει ότι το Git βλέπει το αρχείο, αλλά δεν του έχεις πει ακόμα να το παρακολουθεί.

Για να πούμε στο Git "σε παρακαλώ, συμπεριέλαβε αυτό το αρχείο στο επόμενο save point", χρησιμοποιούμε την εντολή `git add`.
```bash
git add index.html
```
Αν τρέξεις ξανά `git status`, θα δεις ότι το `index.html` είναι τώρα πράσινο, κάτω από την κατηγορία **"Changes to be committed"**. Το έχουμε τοποθετήσει στο λεγόμενο **"Staging Area"**.

> **Τι είναι το Staging Area;**
> Φαντάσου ότι ετοιμάζεις ένα δέμα για αποστολή. Το Staging Area είναι το ανοιχτό κουτί. Μπορείς να προσθέτεις αντικείμενα (αρχεία) μέσα σε αυτό (`git add`), ένα-ένα. Όταν είσαι έτοιμος και έχεις βάλει μέσα ό,τι ήθελες για αυτή την αποστολή, "κλείνεις και σφραγίζεις το κουτί". Αυτό το σφράγισμα είναι το `commit`.

**Βήμα 3: `git commit` - Η δημιουργία του "Save Point"**

Αφού έχουμε προσθέσει τις αλλαγές που θέλουμε στο Staging Area, είμαστε έτοιμοι να τις "φωτογραφίσουμε" και να τις αποθηκεύσουμε μόνιμα στην ιστορία του project. Αυτό γίνεται με την εντολή `git commit`.

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

```bash
git commit -m "Create initial index.html file"
```
*   `git commit`: Η εντολή για να αποθηκεύσεις τις αλλαγές.
*   `-m`: Σημαίνει "message" και σου επιτρέπει να γράψεις το μήνυμά σου απευθείας στην εντολή.
*   `"Create initial index.html file"`: Ένα καλό, περιγραφικό μήνυμα.

Αν τρέξεις τώρα `git status` για τελευταία φορά, θα σου πει: `nothing to commit, working tree clean`. Αυτό σημαίνει ότι η δουλειά σου είναι αποθηκευμένη και δεν υπάρχουν νέες αλλαγές.

Για να δεις την ιστορία των commits σου, μπορείς να χρησιμοποιήσεις την εντολή `git log`. Θα σου δείξει το πρώτο σου commit, με το όνομά σου, την ημερομηνία και το μήνυμα που έγραψες!

---
**Η Ροή Εργασίας με λίγα λόγια:**

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

1.  **Δουλεύεις:** Γράφεις κώδικα, δημιουργείς αρχεία, κάνεις αλλαγές.
2.  **Προσθέτεις:** Χρησιμοποιείς `git add [όνομα αρχείου]` (ή `git add .` για να τα προσθέσεις όλα) για να βάλεις τις αλλαγές σου στο Staging Area.
3.  **Αποθηκεύεις:** Χρησιμοποιείς `git commit -m "Ένα περιγραφικό μήνυμα"` για να δημιουργήσεις ένα νέο, μόνιμο "save point".

---

## **Κεφάλαιο 3: Συνεργασία με το GitHub (Το Portfolio και το Backup σου)**

Μέχρι στιγμής, όλη η ιστορία του project μας (τα commits) ζει αποκλειστικά στον υπολογιστή μας, μέσα σε αυτόν τον κρυφό `.git` φάκελο. Αυτό είναι καλό, αλλά τι θα συμβεί αν ο σκληρός μας δίσκος χαλάσει; Ή αν θέλουμε να δείξουμε τη δουλειά μας σε έναν φίλο, έναν συνάδελφο, ή έναν μελλοντικό εργοδότη;

Εδώ έρχεται το **GitHub**.

**Τι είναι το GitHub; (και ποια η διαφορά του με το Git)**

Ας χρησιμοποιήσουμε μια αναλογία:
*   **Git:** Είναι σαν το Microsoft Word στον υπολογιστή σου. Είναι το *πρόγραμμα* που χρησιμοποιείς για να γράψεις και να επεξεργαστείς το κείμενό σου (τον κώδικά σου) και να παρακολουθείς τις αλλαγές του.
*   **GitHub:** Είναι σαν το Google Docs. Είναι μια *online πλατφόρμα* (μια ιστοσελίδα) που σου επιτρέπει να "ανεβάσεις" τα έγγραφά σου (τα Git repositories σου) στο cloud.

Με το GitHub, μπορείς:
1.  Να έχεις ένα **online backup** του κώδικά σου.
2.  Να **συνεργάζεσαι** με άλλους προγραμματιστές πάνω στο ίδιο project.
3.  Να δημιουργήσεις ένα **δημόσιο portfolio** με τα projects σου, κάτι που είναι απολύτως απαραίτητο για την εύρεση εργασίας.

**Βήμα 1: Δημιουργία λογαριασμού και του πρώτου σου Remote Repository**

1.  Πήγαινε στο [https://github.com](https://github.com) και δημιούργησε έναν δωρεάν λογαριασμό. Αφιέρωσε λίγο χρόνο για να διαλέξεις ένα καλό, επαγγελματικό username!
2.  Μόλις συνδεθείς, ψάξε για ένα κουμπί `+` στην πάνω δεξιά γωνία ή ένα μεγάλο πράσινο κουμπί **"New"** ή **"Create repository"**. Πάτησέ το.
3.  Θα μεταφερθείς στη σελίδα δημιουργίας ενός νέου "αποθετηρίου" (repository). Αυτό είναι το online "σπίτι" για το project σου.
    *   **Repository name:** Δώσε του ένα όνομα. Καλό είναι να έχει το ίδιο όνομα με τον φάκελο στον υπολογιστή σου, π.χ., `my-first-git-project`.
    *   **Description (optional):** Γράψε μια σύντομη περιγραφή.
    *   **Public / Private:** Επίλεξε **Public** αν θέλεις να είναι ορατό σε όλους (ιδανικό για portfolio) ή **Private** αν είναι ένα προσωπικό σου project που δεν θέλεις να δει κανείς.
    *   **ΣΗΜΑΝΤΙΚΟ:** **Μην τσεκάρεις** τα κουτάκια που λένε "Add a README file", "Add .gitignore", ή "Choose a license" για τώρα. Θέλουμε να δημιουργήσουμε ένα εντελώς *άδειο* repository, γιατί το project μας υπάρχει ήδη τοπικά.
4.  Πάτα το κουμπί **"Create repository"**.

**Βήμα 2: `git remote` & `git push` - Σύνδεση και αποστολή**

Το GitHub τώρα θα σου δείξει μια σελίδα με κάποιες εντολές. Εμάς μας ενδιαφέρει η ενότητα που λέει **“…or push an existing repository from the command line”**. Αυτή είναι η περίπτωσή μας!

1.  **Σύνδεση του τοπικού repo με το remote (`git remote add`):**
    Πρώτα, πρέπει να "γνωρίσουμε" το τοπικό μας repository με το online repository που μόλις φτιάξαμε. Αντιγράφουμε την πρώτη εντολή που μας δίνει το GitHub. Θα μοιάζει κάπως έτσι:
    ```bash
    git remote add origin https://github.com/YourUsername/my-first-git-project.git
    ```
    *   `git remote add`: Είναι η εντολή που λέει "Πρόσθεσε μια νέα απομακρυσμένη (remote) σύνδεση".
    *   `origin`: Είναι ένα συμβατικό, "βολικό" όνομα που δίνουμε σε αυτήν την κύρια remote σύνδεση. Στο 99% των περιπτώσεων, θα το ονομάζεις `origin`.
    *   `https://...`: Είναι η μοναδική διεύθυνση URL του repository σου στο GitHub.

2.  **Αποστολή του κώδικα (`git push`):**
    Τώρα που η σύνδεση έγινε, είμαστε έτοιμοι να "σπρώξουμε" (push) τα commits που έχουμε κάνει τοπικά, προς τα πάνω, στο GitHub. Η εντολή για την πρώτη φορά είναι λίγο πιο περίπλοκη, αλλά το GitHub μας τη δίνει έτοιμη:
    ```bash
    git push -u origin main
    ```
    *   `git push`: Η βασική εντολή για να στείλεις τις αλλαγές σου.
    *   `-u origin main`: Αυτό το κομμάτι το γράφουμε μόνο την πρώτη φορά. Λέει στο τοπικό σου Git: "Σπρώξε στον remote server που ονομάσαμε `origin`, τον κλάδο (branch) που λέγεται `main`, και σε παρακαλώ θυμήσου αυτή τη σύνδεση για το μέλλον, ώστε την επόμενη φορά να αρκεί ένα απλό `git push`".

    > **Σημείωση `main` vs `master`:** Παλιότερα, ο προεπιλεγμένος κλάδος ονομαζόταν `master`. Πρόσφατα, η κοινότητα μετακινήθηκε στο όνομα `main`. Αν οι εντολές στο GitHub σου λένε `master`, χρησιμοποίησε `master`. Αν λένε `main`, χρησιμοποίησε `main`.

    Αφού τρέξεις την εντολή, το terminal μπορεί να σου ζητήσει να κάνεις login στο GitHub. Μόλις ολοκληρωθεί, πήγαινε ξανά στη σελίδα του repository σου στο GitHub και ανανέωσέ την. **Θαύμα!** Το `index.html` αρχείο σου είναι τώρα εκεί!

**Βήμα 3: `git clone` - Ο άλλος δρόμος (Κατεβάζοντας ένα Project)**

Και αν ένα project υπάρχει *ήδη* στο GitHub και θέλεις να το κατεβάσεις στον υπολογιστή σου για να δουλέψεις; Η διαδικασία είναι ακόμα πιο απλή.

1.  Πήγαινε στη σελίδα του repository στο GitHub.
2.  Πάτα το πράσινο κουμπί **"< > Code"**.
3.  Αντέγραψε τη διεύθυνση URL (HTTPS).
4.  Στο terminal σου (σε έναν φάκελο όπου θέλεις να αποθηκεύσεις το project), τρέξε την εντολή:
    ```bash
    git clone https://github.com/SomeUser/some-repository.git
    ```
    Αυτό αυτόματα:
    *   Δημιουργεί έναν φάκελο με το όνομα του project.
    *   Κατεβάζει όλα τα αρχεία.
    *   Ρυθμίζει αυτόματα το `remote origin` για σένα!

---

**Ο νέος κύκλος εργασίας σου:**

Από εδώ και πέρα, η δουλειά σου θα μοιάζει κάπως έτσι:

1.  Κάνεις αλλαγές στον κώδικά σου.
2.  `git add .`
3.  `git commit -m "Έκανα αυτές τις φοβερές αλλαγές"`
4.  `git push` (Τώρα αρκεί η απλή εντολή, αφού ρυθμίσαμε το `-u` την πρώτη φορά).

Συγχαρητήρια! Έχεις πλέον τις θεμελιώδεις δεξιότητες του Git. Μπορείς να παρακολουθείς την ιστορία του κώδικά σου τοπικά, αλλά και να τον αποθηκεύεις και να τον μοιράζεσαι online. Αυτό από μόνο του σε βάζει σε ένα εντελώς νέο, επαγγελματικό επίπεδο.

---

## **Κεφάλαιο 4: Branching (Η μαγεία του πειραματισμού χωρίς ρίσκο)**

Μέχρι τώρα, όλες οι αλλαγές μας (τα commits) γίνονταν σε μια ευθεία γραμμή, μια χρονολογική αλυσίδα. Αυτή η κύρια γραμμή, από προεπιλογή, ονομάζεται **`main`** (ή `master` σε παλιότερα συστήματα).

Σκεφτείτε τον κλάδο (branch) `main` σαν την **τελική, επίσημη έκδοση** του project σας. Είναι ο κώδικας που είναι σταθερός, δοκιμασμένος και λειτουργεί. Δεν θα θέλατε ποτέ να δουλεύετε απευθείας πάνω σε αυτόν για κάτι νέο και αδοκίμαστο, γιατί μια λάθος κίνηση θα μπορούσε να "σπάσει" τα πάντα.

Τι κάνουμε λοιπόν όταν θέλουμε να προσθέσουμε μια νέα λειτουργία (π.χ. μια νέα σελίδα, ένα κουμπί, μια φόρμα); Δημιουργούμε ένα **νέο branch**.

**Η αναλογία του αντιγραφικού χαρτιού (Tracing Paper)**

Η καλύτερη αναλογία για να καταλάβετε τα branches είναι το αντιγραφικό χαρτί:

1.  Έχετε το αρχικό σας σχέδιο, που είναι τέλειο και ολοκληρωμένο. Αυτό είναι το **`main` branch** σας.
2.  Θέλετε να δοκιμάσετε να προσθέσετε ένα δέντρο στο σχέδιό σας. Αντί να ζωγραφίσετε απευθείας πάνω στο πρωτότυπο, παίρνετε ένα διαφανές, αντιγραφικό χαρτί και το τοποθετείτε από πάνω. Αυτή η κίνηση είναι το **`git branch [new-feature]`**.
3.  Τώρα, ζωγραφίζετε το δέντρο πάνω στο αντιγραφικό χαρτί. Μπορείτε να κάνετε ό,τι αλλαγές θέλετε, να σβήσετε, να ξανασχεδιάσετε. Το αρχικό σχέδιο από κάτω παραμένει **ανέγγιχτο**. Αυτή είναι η δουλειά σας στο νέο branch.
4.  Όταν τελειώσετε και είστε ευχαριστημένοι με το δέντρο που σχεδιάσατε:
    *   **Αν σας αρέσει το αποτέλεσμα:** Ενσωματώνετε μόνιμα το σχέδιο από το αντιγραφικό χαρτί πάνω στο πρωτότυπο. Αυτή η διαδικασία λέγεται **`merge` (συγχώνευση)**.
    *   **Αν δεν σας αρέσει:** Απλά πετάτε το αντιγραφικό χαρτί. Το πρωτότυπο σχέδιο δεν επηρεάστηκε ποτέ. Αυτή είναι η **διαγραφή ενός branch**.

**Ο κύκλος εργασίας με Branches (Feature Branch Workflow)**

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

**Βήμα 1: Δημιουργία και μετάβαση σε ένα νέο Branch (`git checkout -b`)**

Δεν δημιουργούμε απλώς ένα branch, θέλουμε και να μεταβούμε αμέσως σε αυτό για να ξεκινήσουμε τη δουλειά. Η συνδυαστική εντολή γι' αυτό είναι η `checkout -b`:

```bash
# Βεβαιωθείτε ότι είστε πρώτα στο main branch
git checkout main

# Τώρα, δημιουργήστε το νέο branch και μεταβείτε σε αυτό
git checkout -b add-footer-feature
```

*   Το `-b` σημαίνει "branch" και λέει στην `checkout` να δημιουργήσει το branch αν δεν υπάρχει.
*   `add-footer-feature` είναι ένα καλό, περιγραφικό όνομα για το branch μας.

Το terminal θα σας πει: `Switched to a new branch 'add-footer-feature'`. Τώρα δουλεύετε πάνω στο "αντιγραφικό χαρτί".

**Βήμα 2: Δουλειά στο νέο Branch (Κώδικας & Commits)**

Τώρα μπορείτε να ανοίξετε το `index.html` στον VS Code και να προσθέσετε τον κώδικα για το footer:

```html
<!-- Στο τέλος του <body> -->
<footer>
    <p>&copy; 2025 My Awesome Website</p>
</footer>
```

Στη συνέχεια, κάνετε κανονικά τη διαδικασία `add` και `commit`, **αλλά μέσα στο νέο σας branch**:

```bash
git add index.html
git commit -m "Add footer section to the page"
```
Αυτό το commit τώρα υπάρχει *μόνο* μέσα στο `add-footer-feature` branch. Αν αυτή τη στιγμή γυρίσετε πίσω στο `main` branch με την εντολή `git checkout main`, το footer θα... εξαφανιστεί από το αρχείο σας! Αυτό συμβαίνει γιατί το `main` branch δεν έχει "ακούσει" ακόμα γι' αυτή την αλλαγή.

**Βήμα 3: Συγχώνευση των αλλαγών (`git merge`)**

Η νέα λειτουργία είναι έτοιμη και δοκιμασμένη. Ώρα να την ενσωματώσουμε στην κύρια έκδοση του project μας. Η διαδικασία έχει δύο βήματα:

1.  **Πρώτα, επιστρέφουμε στο branch που θα "δεχτεί" τις αλλαγές.** Στην περίπτωσή μας, είναι το `main`.
    ```bash
    git checkout main
    ```
2.  **Τώρα, του λέμε να "τραβήξει" τις αλλαγές από το άλλο branch.**
    ```bash
    git merge add-footer-feature
    ```
    Αν όλα πάνε καλά, θα δείτε ένα μήνυμα που λέει ότι το `index.html` ανανεώθηκε. Αν ανοίξετε ξανά το αρχείο, θα δείτε ότι το footer είναι πλέον εκεί, μόνιμα ενσωματωμένο στο `main` branch.

**Βήμα 4: "Καθάρισμα" (`git branch -d`)**

Το branch `add-footer-feature` έκανε τη δουλειά του. Δεν το χρειαζόμαστε πλέον. Είναι καλή πρακτική να διαγράφουμε τα feature branches μετά την επιτυχή συγχώνευσή τους για να διατηρούμε το repository μας καθαρό.

```bash
git branch -d add-footer-feature
```

Το `-d` σημαίνει `delete`. Το Git δεν θα σας αφήσει να διαγράψετε ένα branch αν δεν έχουν συγχωνευθεί οι αλλαγές του, προστατεύοντάς σας από το να χάσετε δουλειά κατά λάθος.

---

**Συνοψίζοντας τον επαγγελματικό τρόπο δουλειάς:**

1.  Ξεκινάς ένα νέο task; **Δημιούργησε ένα νέο branch (`git checkout -b ...`)**.
2.  Δούλεψε ελεύθερα, κάνε όσα commits χρειάζεσαι.
3.  Όταν το feature είναι έτοιμο, γύρνα πίσω στο `main` (`git checkout main`).
4.  Συγχώνευσε τη δουλειά σου (`git merge ...`).
5.  Διέγραψε το παλιό branch (`git branch -d ...`).
6.  (Προαιρετικά, αλλά συνιστάται) Κάνε `git push` για να ανέβουν οι νέες αλλαγές του `main` στο GitHub.

Αυτή η ροή εργασίας, γνωστή ως **Feature Branch Workflow**, είναι το βιομηχανικό πρότυπο. Σας επιτρέπει να δουλεύετε με ασφάλεια, να πειραματίζεστε και να συνεργάζεστε αποτελεσματικά.
