Version control ή Revision Control είναι εργαλείο που χρησιμοποιείται για την αποτελεσματική διαχείριση του πηγαίου κώδικα ενός προγράμματος. Χρησιμοποιώντας τέτοια ένα τέτοιο σύστημα υπάρχει η δυνατότητα να αποθηκεύετε το ιστορικό αλλάγων στο κώδικα και γενικότερα στα αρχεία ενός λογισμικού τόσο στη φάση ανάπτυξης αλλά και στη συνέχεια. Eίiναι ιδιαίτερα χρήσιμο όταν αναπτύσετε project λογισμικού, στο πλαίσιο μιας ομάδας όπου αποτελείται από δύο ή περισσότερα ατόμα γιατί μπορούν να ενώσουν πολύ εύκολα τα κομμάτια του κώδικα που γράφει ο καθέ software developer ξεxωριστά.

Αλλά και στη περίπτωση που δουλεύει κάποιος μόνος του, αν δημιουργηθεί πρόβλημα στο λογισμικό ή έχει κάποιο σημαντικό bug μπορείτε πολύ εύκολα να επαναφέρετε σε μία προηγούμενη έκδοση μέχρι να λυθεί το bug. Τρία γνωστά Version Control Systems, είναι το Mercurial το οποίο δημιουργήθηκε το 2005 και είναι κυρίως γραμμένο στη python, SVN ή αλλιώς Apache Subversion, και το τελευαταίο δημοφιλές είναι το Git το οποίο αναπτύχτηκε απο το Linus Torvalds, για να βοηθήσει στην ανάπτυξη του Linux Kernel.

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

git init

Για να προσθούσουμε όλα τα αρχείο από το project μας στη προσωρινή περιοχή (staging area) εκτελούμε

git add .

Για να αποθηκεύσουμε τις αλλαγές στο τοπικό repository

git commit -m "to minimima mou"

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

git branch "onoma kladiou"

Για να αλλάξουμε κλαδί

git checkout "onoma kladiou"

Τώρα αν βρισκόμαστε στο  branch και υπάρχουν καινούργιες αλλαγές στο master branch μπορούμε να τις ενσωματώσουμε στο κλαδί "onoma kladiou" κάνοντας merge

git merge master

Στη συνέχεια αν υπάρχουν confict

git mergetool

Ενα γνωστό εργαλείο είναι το meld

Μπορείτε να έχετε τα remote directories σε δικός σας server έχοντας εγκαταστησει λογισμικό όπως gitlab ή να χρησiμοποιήσετε δημοφιλής υπηρεσίες για αποθετήρια λογισμικός όπως το GitHub, BitBucket, BeanStalk. Αλλά ειδικά όταν αναπτύσσεται επιχειρηματικό λογισμικό και όχι απλά να κάνετε παραμετροποιήσεις η χρήση του source controls είναι απαραίτητη.