Git και GitHub: Βασικές Έννοιες και Εντολές
Το GitHub είναι μια πλατφόρμα για αποθήκευση και συνεργασία σε projects με χρήση του Git. Στο GitHub μπορείς να ανεβάζεις τον κώδικά σου, να δουλεύεις σε ομάδες και να κρατάς ιστορικό αλλαγών.
Βασικές Έννοιες
| Έννοια | Περιγραφή |
|---|---|
| Repository (Repo) | Αποθετήριο – εκεί που φυλάσσεται ο κώδικας |
| Commit | Μια αποθηκευμένη αλλαγή στο project |
| Branch | Διαφορετική εκδοχή του project |
| Pull Request (PR) | Πρόταση για να ενωθούν αλλαγές από ένα branch στο κύριο |
| Push | Στέλνει τις αλλαγές που έχεις κάνει τοπικά (στον υπολογιστή σου) στο αποθετήριο στο GitHub. |
| Clone | Αντιγραφή repo στον υπολογιστή σου |
| Fork | Δημιουργία αντιγράφου του repo στο δικό σου λογαριασμό |
Αναλυτικά το “git push origin main”:
Στείλε τις αλλαγές μου από τον υπολογιστή μου στο GitHub (στο αποθετήριο), στο συγκεκριμένο branch που λέγεται main.
| git | Το εργαλείο Git |
| push | “Σπρώξε” τις αλλαγές |
| origin | Το αποθετήριο στο GitHub |
| main | Το branch στο οποίο στέλνεις (π.χ. main ή master) |
Παράδειγμα:
echo "Hello GitHub" > index.html
git add .
git commit -m "Πρόσθεσα το αρχικό index"
git push origin main
README
Το README.md είναι το πρώτο αρχείο που βλέπει κάποιος όταν επισκέπτεται το αποθετήριό σου στο GitHub.
Γιατί είναι σημαντικό;
- Βοηθάει άλλους να καταλάβουν το project σου
- Κάνει το repo σου να φαίνεται επαγγελματικό
- Είναι απαραίτητο για open source συνεργασία
Git και GitHub: Ποια είναι η διαφορά;
Το Git είναι ένα κατανεμημένο σύστημα ελέγχου εκδόσεων (Version Control System – VCS). Καταγράφει τις αλλαγές στα αρχεία ενός project και επιτρέπει την επιστροφή σε προηγούμενες εκδόσεις. Το GitHub είναι μια διαδικτυακή πλατφόρμα φιλοξενίας αποθετηρίων Git, η οποία προσθέτει εργαλεία συνεργασίας, διαχείρισης εργασιών και αυτοματοποίησης.
- Git: εκτελείται τοπικά στον υπολογιστή σου και διαχειρίζεται το ιστορικό αλλαγών.
- GitHub: φιλοξενεί απομακρυσμένα repositories και διευκολύνει τη συνεργασία.
- GitHub δεν είναι το Git: μπορείς να χρησιμοποιείς Git χωρίς λογαριασμό στο GitHub ή να φιλοξενείς Git repositories σε άλλες υπηρεσίες.
Εγκατάσταση και αρχική ρύθμιση του Git
Πριν ξεκινήσεις, εγκατέστησε το Git από την επίσημη ιστοσελίδα git-scm.com/downloads. Έπειτα άνοιξε το Terminal ή τη γραμμή εντολών και έλεγξε την εγκατάσταση.
git --version
Όρισε το όνομα και το email που θα συνδέονται με τα commits σου. Χρησιμοποίησε στοιχεία που θέλεις να εμφανίζονται στο ιστορικό των αλλαγών σου.
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# Εμφάνιση των ρυθμίσεων
git config --global --list
Δημιουργία του πρώτου Repository
Μπορείς να ξεκινήσεις ένα νέο τοπικό project και να το μετατρέψεις σε Git repository με την εντολή git init. Στη συνέχεια προσθέτεις αρχεία στο staging area και δημιουργείς το πρώτο commit.
# Δημιουργία φακέλου project
mkdir my-first-project
cd my-first-project
# Αρχικοποίηση Git repository
git init
# Δημιουργία αρχείου
echo "# My First Project" > README.md
# Έλεγχος κατάστασης
git status
# Προσθήκη αρχείου στο staging area
git add README.md
# Δημιουργία commit
git commit -m "Initial commit"
Τι είναι το staging area; Είναι το ενδιάμεσο στάδιο στο οποίο επιλέγεις ποιες αλλαγές θα συμπεριληφθούν στο επόμενο commit. Η εντολή git add προσθέτει αλλαγές σε αυτό το στάδιο, ενώ η git commit τις καταγράφει στο ιστορικό.
Σύνδεση τοπικού Repository με το GitHub
Δημιούργησε ένα νέο repository στον λογαριασμό σου στο GitHub. Αν έχεις ήδη δημιουργήσει το project τοπικά, πρόσθεσε το URL του απομακρυσμένου repository ως origin και ανέβασε το branch main.
# Σύνδεση με το απομακρυσμένο repository
git remote add origin https://github.com/USERNAME/REPOSITORY.git
# Έλεγχος απομακρυσμένων συνδέσεων
git remote -v
# Ορισμός του main ως κύριου branch
git branch -M main
# Αποστολή του branch στο GitHub
git push -u origin main
Αντικατάστησε τα USERNAME και REPOSITORY με το όνομα χρήστη και το όνομα του repository σου. Η επιλογή -u ορίζει το upstream branch, ώστε στις επόμενες ενημερώσεις να μπορείς συνήθως να χρησιμοποιείς απλώς git push και git pull.
Βασικές εντολές Git
| Εντολή | Λειτουργία |
|---|---|
git status | Εμφανίζει την κατάσταση των αρχείων και των αλλαγών. |
git add . | Προσθέτει τις αλλαγές του τρέχοντος φακέλου στο staging area. |
git commit -m "message" | Καταγράφει τις staged αλλαγές με ένα μήνυμα. |
git log --oneline | Εμφανίζει συνοπτικά το ιστορικό των commits. |
git diff | Δείχνει τις αλλαγές που δεν έχουν προστεθεί στο staging area. |
git branch | Εμφανίζει τα τοπικά branches. |
git switch main | Μεταβαίνει στο branch main. |
git pull | Ενημερώνει το τοπικό branch από το αντίστοιχο απομακρυσμένο branch. |
git fetch | Κατεβάζει πληροφορίες από το remote χωρίς να ενσωματώνει αυτόματα τις αλλαγές στο τρέχον branch. |
git clone URL | Δημιουργεί τοπικό αντίγραφο ενός απομακρυσμένου repository. |
git restore FILE | Επαναφέρει αλλαγές σε αρχείο που δεν έχουν γίνει commit. Χρησιμοποίησέ το προσεκτικά, γιατί μπορεί να χαθούν τοπικές αλλαγές. |
Branches: Παράλληλη ανάπτυξη
Ένα branch επιτρέπει να αναπτύσσεις μια νέα λειτουργία ή να διορθώνεις ένα σφάλμα χωρίς να επηρεάζεις άμεσα τον κύριο κώδικα. Όταν ολοκληρωθεί η εργασία, οι αλλαγές μπορούν να ενσωματωθούν στο main μέσω merge ή Pull Request.
# Δημιουργία νέου branch
git branch feature/login
# Μετάβαση στο branch
git switch feature/login
# Εναλλακτικά: δημιουργία και μετάβαση μαζί
git switch -c feature/register
# Εμφάνιση branches
git branch
# Επιστροφή στο main
git switch main
# Ενσωμάτωση branch στο main
git merge feature/login
# Διαγραφή τοπικού branch μετά το merge
git branch -d feature/login
Pull Requests (PR)
Το Pull Request είναι ένας μηχανισμός συνεργασίας στο GitHub. Μέσω αυτού ζητάς να ενσωματωθούν οι αλλαγές ενός branch σε κάποιο άλλο branch. Πριν από την ενσωμάτωση, οι συνεργάτες μπορούν να ελέγξουν τον κώδικα, να αφήσουν σχόλια και να ζητήσουν διορθώσεις.
- Δημιούργησε ένα νέο branch για την εργασία σου.
- Κάνε τις αλλαγές στον κώδικα και δημιούργησε commits.
- Ανέβασε το branch στο GitHub με
git push -u origin branch-name. - Άνοιξε το repository στο GitHub και επίλεξε δημιουργία Pull Request.
- Συμπλήρωσε τίτλο και περιγραφή, εξηγώντας τι αλλάζει.
- Περίμενε τον έλεγχο (Code Review) και αντιμετώπισε τυχόν σχόλια.
- Όταν εγκριθεί, το PR μπορεί να γίνει merge.
Issues και διαχείριση εργασιών
Τα GitHub Issues χρησιμοποιούνται για την καταγραφή bugs, νέων λειτουργιών, προτάσεων και εργασιών. Κάθε Issue μπορεί να έχει περιγραφή, labels, assignees, milestone και σχόλια. Έτσι, η ομάδα παρακολουθεί τι πρέπει να γίνει και ποιος έχει αναλάβει κάθε εργασία.
- Bug: αναφορά προβλήματος ή λανθασμένης συμπεριφοράς.
- Feature Request: πρόταση για νέα δυνατότητα.
- Labels: κατηγοριοποίηση, όπως bug, enhancement ή documentation.
- Milestones: ομαδοποίηση εργασιών με κοινό στόχο ή έκδοση.
Το αρχείο .gitignore
Το .gitignore ορίζει ποια αρχεία και φάκελοι δεν πρέπει να παρακολουθούνται από το Git. Είναι χρήσιμο για προσωρινά αρχεία, εξαρτήσεις, logs και τοπικές ρυθμίσεις. Δεν αφαιρεί αρχεία που έχουν ήδη προστεθεί στο repository.
Παράδειγμα αρχείου .gitignore για ένα γενικό project:
# Environment variables και μυστικά
.env
.env.*
# Εξαρτήσεις Node.js
node_modules/
# Logs
*.log
# Προσωρινά αρχεία
*.tmp
.DS_Store
# Φάκελοι IDE
.vscode/
.idea/
Σημαντικό: Μην ανεβάζεις passwords, API keys, access tokens, private keys ή άλλα μυστικά στο GitHub. Το να προσθέσεις ένα αρχείο στο .gitignore δεν αναιρεί τη δημοσίευση ενός μυστικού που έχει ήδη γίνει commit. Αν εκτεθεί κάποιο token ή κλειδί, κάνε άμεσα revoke/rotation από την αντίστοιχη υπηρεσία.
Fork και συνεισφορά σε Open Source Projects
Το Fork δημιουργεί ένα αντίγραφο ενός repository στον δικό σου λογαριασμό GitHub. Είναι συνηθισμένος τρόπος συνεισφοράς σε open source projects, όταν δεν έχεις δικαίωμα απευθείας εγγραφής στο αρχικό repository.
- Επίλεξε Fork στο repository που σε ενδιαφέρει.
- Κάνε clone το δικό σου fork στον υπολογιστή σου.
- Δημιούργησε branch για τις αλλαγές σου.
- Υλοποίησε και έλεγξε τις αλλαγές.
- Κάνε push στο δικό σου fork.
- Άνοιξε Pull Request προς το αρχικό repository.
# Clone του δικού σου fork
git clone https://github.com/USERNAME/PROJECT.git
cd PROJECT
# Προσθήκη του αρχικού repository ως upstream
git remote add upstream https://github.com/ORIGINAL-OWNER/PROJECT.git
# Λήψη των τελευταίων αλλαγών του αρχικού project
git fetch upstream
GitHub Actions και αυτοματοποίηση
Το GitHub Actions είναι πλατφόρμα αυτοματοποίησης εργασιών μέσα σε ένα repository. Μπορεί να εκτελεί tests, builds, ελέγχους ποιότητας και deployments όταν συμβαίνουν συγκεκριμένα γεγονότα, όπως ένα push ή ένα Pull Request. Οι ροές εργασίας (workflows) ορίζονται σε αρχεία YAML μέσα στον φάκελο .github/workflows/.
Απλό παράδειγμα workflow που εκτελείται σε κάθε push και Pull Request:
name: Basic Workflow
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Show message
run: echo "GitHub Actions is running"
Το παραπάνω είναι ένα απλό παράδειγμα επίδειξης. Σε πραγματικά projects, τα workflows συνήθως περιλαμβάνουν εγκατάσταση εξαρτήσεων, εκτέλεση tests και ελέγχους πριν από την ενσωμάτωση αλλαγών.
Releases και Tags
Τα Tags επισημαίνουν συγκεκριμένα σημεία στο ιστορικό του Git, συνήθως για να ορίσουν εκδόσεις λογισμικού. Οι GitHub Releases συνδέουν μια έκδοση με περιγραφή αλλαγών και, αν χρειάζεται, αρχεία προς λήψη.
# Δημιουργία annotated tag
git tag -a v1.0.0 -m "Version 1.0.0"
# Αποστολή του συγκεκριμένου tag στο GitHub
git push origin v1.0.0
# Εμφάνιση tags
git tag
Συνηθισμένα προβλήματα και λύσεις
Δεν υπάρχουν αλλαγές για commit
Αν το Git εμφανίζει μήνυμα ότι δεν υπάρχουν αλλαγές, έλεγξε την κατάσταση του repository και αν έχεις αποθηκεύσει τις αλλαγές στα αρχεία σου.
git status
git diff
Rejected push λόγω απομακρυσμένων αλλαγών
Αν το απομακρυσμένο branch έχει commits που δεν υπάρχουν τοπικά, το push μπορεί να απορριφθεί. Κατέβασε και ενσωμάτωσε πρώτα τις αλλαγές και μετά δοκίμασε ξανά.
git pull --rebase origin main
git push origin main
Merge Conflict
Ένα merge conflict εμφανίζεται όταν το Git δεν μπορεί να συνδυάσει αυτόματα αλλαγές, για παράδειγμα όταν δύο branches τροποποιούν τις ίδιες γραμμές ενός αρχείου. Άνοιξε τα αρχεία με conflict, επίλεξε το σωστό τελικό περιεχόμενο, αφαίρεσε τους δείκτες σύγκρουσης και ολοκλήρωσε τη διαδικασία.
# Μετά τη χειροκίνητη επίλυση των conflicts
git add .
git commit
Καθημερινό Workflow ενός Developer
Ένα συνηθισμένο workflow για ατομική εργασία ή συνεργασία σε ομάδα είναι το παρακάτω:
# 1. Ενημέρωση του main branch
git switch main
git pull
# 2. Δημιουργία branch για νέα εργασία
git switch -c feature/new-function
# 3. Έλεγχος αλλαγών
git status
git diff
# 4. Προσθήκη και καταγραφή αλλαγών
git add .
git commit -m "Add new function"
# 5. Ανέβασμα του branch στο GitHub
git push -u origin feature/new-function
# 6. Δημιουργία Pull Request από το GitHub
# Μετά το review και το merge, επιστροφή στο main
git switch main
git pull
Χρήσιμες επίσημες πηγές
- GitHub Documentation – επίσημη τεκμηρίωση του GitHub.
- GitHub Get Started – οδηγίες για τα πρώτα βήματα.
- Git Documentation – επίσημη τεκμηρίωση του Git.
- GitHub Skills – διαδραστικά μαθήματα εξάσκησης.
- GitHub Actions Documentation – οδηγός για workflows και αυτοματοποίηση.