Κατηγορίες
tech

Το git με απλά λόγια

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

Υπάρχουν διάφορα λογισμικά που μας βοηθούν να κάνουμε διαχείριση εκδόσεων, με δημοφιλέστερο το git.

Επίσης υπάρχουν ιστότοποι που οι εξυπηρετητές τους χρησιμοποιούν το git και έτσι εμείς μπορούμε να έχουμε πρόσβαση στο git μέσω των ιστοσελίδων τους. Τέτοιες δημοφιλείς υπηρεσίες παρέχονται από το gitlab, το github και άλλους.

Έτσι, μπορείτε να εγκαταστήσετε το git στον υπολογιστή σας ή όχι.

  • Αν δεν το εγκαταστήσετε θα μπορείτε να εργαστείτε μέσω των ιστοσελίδων που μας προσφέρει ο απομακρυσμένος εξυπηρετητής.
  • Αν το εγκαταστήσετε (συνιστάται) θα μπορείτε είτε να εργαστείτε τοπικά στον υπολογιστή σας, είτε να εργαστείτε μέσω του απομακρυσμένου εξυπηρετητή.

Η λειτουργία του git

Ένας φάκελος στον υπολογιστή μας έχει την χρήση αποθετηρίου. Ένα πλήρες αντίγραφο αυτού του αποθετηρίου υπάρχει σε κάποιον εξυπηρετητή (π.χ. στο gitlab) και λέγεται απομακρυσμένο αποθετήριο. Ένα πλήρες αντίγραφο υπάρχει στον υπολογιστή του καθένα που συμμετέχει στην ανάπτυξη του αποθετηρίου. Δεν υπάρχει κάποιο αποθετήριο που να είναι πρώτο/καλύτερο/πιο πλήρες. Όλα είναι ακριβώς τα ίδια και περιλαμβάνουν το ιστορικό όλων των αλλαγών σε όλα τα αρχεία μαζί με τις σχετικές πληροφορίες (ποιος έκανε την προσθήκη, αλλαγή, διαγραφή, πότε κτλ).

Το git μας βοηθάει να:

  • δημιουργήσουμε ένα αποθετήριο στον υπολογιστή μας (τοπικό αποθετήριο).
  • διαχειριζόμαστε το τοπικό αποθετήριο και το ιστορικό των αρχείων.
  • συγχρονίζουμε τα απομακρυσμένα αποθετήρια, ενημερώνοντάς τα με τις αλλαγές που έχουμε κάνει στο τοπικό αποθετήριο.
  • συγχρονίζουμε το τοπικό μας αποθετήριο, ενημερώνοντας το με τις αλλαγές που λαμβάνουμε από το απομακρυσμένο αποθετήριο.

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

Δημιουργία τοπικού αποθετηρίου

Αυτή η λειτουργία γίνεται μόνο μία φορά

  • Αν δεν υπάρχει απομακρυσμένο αποθετήριο git init (δείτε τις οδηγίες βάζοντας την λέξη help πριν την εντολή π.χ. git help init).
  • Αν υπάρχει απομακρυσμένο αποθετήριο η git clone δημιουργεί ένα τοπικό αποθετήριο και το συγχρονίζει με τα περιεχόμενα του απομακρυσμένου.

Τροποποίηση και υποβολή αρχείων

  • Χρησιμοποιούμε τα συνηθισμένα εργαλεία μας για να δημιουργήσουμε, τροποποιήσουμε, διαγράψουμε αρχεία και φακέλους.
  • Μετά από λίγες αλλαγές στο αποθετήριο, ελέγχουμε την κατάσταση με git status και σταδιοποιούμε τις αλλαγές: π.χ. git add .
  • Ξαναελέγχουμε την κατάσταση με git status και υποβάλουμε τις σταδιοποιημένες αλλαγές, γράφοντας και ένα σύντομο αλλά κατατοπιστικό μήνυμα: π.χ. git commit -m "my first commit"

Συγχρονισμός – αποστολή

  • Αν έχουμε κάνει νέες υποβολές/αλλαγές στο τοπικό αποθετήριο και θέλουμε να τις στείλουμε στο απομακρυσμένο αποθετήριο προκειμένου να μπορούν να τις δουν και άλλοι εκτός από εμάς, κάνουμε git push

Συγχρονισμός – λήψη

  • Αν θέλουμε να ελέγξουμε αν υπάρχει κάτι νεότερο στο απομακρυσμένο αποθετήριο (ώστε να μπορέσουμε να το πάρουμε κι εμείς) κάνουμε git fetch
  • Μπορούμε να συγκρίνουμε την κατάσταση του τοπικού αποθετηρίου με την κατάσταση του απομακρυσμένου με git diff main origin/main (μπορεί αντί main να χρειαστεί να χρησιμοποιήσουμε την λέξη master ή ότι άλλο έχει οριστεί κατά την δημιουργία του αποθετηρίου).
  • Κάνουμε τελικά την λήψη των νεότερων αρχείων από το απομακρυσμένο αποθετήριο με git pull

Έλεγχος υποβολών του τοπικού αποθετηρίου

  • git log ή git log --pretty=oneline

Υπάρχουν πάρα πολλές ακόμη λειτουργίες, οι οποίες όμως καλό είναι να τις εξερευνήσουμε μόνο εφόσον αισθανόμαστε πολύ άνετα με τα όσα ήδη αναφέρθηκαν. (π.χ.  αποθήκευση credentials, διαχείριση κλάδων-branches, αναζήτηση σφαλμάτων κλπ). Διαβάστε επίσης το άρθρο To git και οι κλάδοι.

Μπορείτε να μελετήσετε περισσότερα για το git στο https://git-scm.com/doc

Έχετε κάτι να σχολιάσετε;