3. Git εδώ, Git εκεί...
Δημοφιλέστερο VCS - 43% σύμφωνα με το Eclipse Foundation
27% των αγγελιών στο ITJobsWatch, διπλάσιες από κάθε άλλο VCS
Native υποστήριξη στον TFS
Φάτσα-κάρτα στο Visual Studio Code
MS Connect 2015 Git Git Git
Τυχαίο;
4. Έτυχε ποτέ;
Να είναι κλειδωμένο το αρχείο που χρειάζεται;
Να θέλουν 10 devs το ίδιο αρχείο;
Να θέλετε να κρατήσετε μισοτελειωμένη δουλειά πριν από επικίνδυνες
αλλαγές;
Να χρειαστεί να πετάξετε αλλαγές μιας βδομάδας για ένα λάθος της Τετάρτης;
Να μπλέκονται διάφορες αλλαγές σε ένα και μοναδικό branch;
Να φοβάστε να φτιάξετε ένα branch γιατί θα πάρει χρόνια;
Να παγώσετε δουλειά γιατί κάτι έσκασε στην παραγωγή; Και μετά να παλεύετε
να περάσετε τις διορθώσεις;
Να χάσετε το ένα και μοναδικό repository;
5. Έτυχε ποτέ;
Να σας κάψουν την εταιρεία;
Πολλά repos
Μεταφορά αλλαγών, συμπίεση
Πανεύκολο replication
6. Λίγη ιστορία
Δημιουργήθηκε από το Linus Torvalds
Version Control για ανάπτυξη του Linux
Στόχοι
Scale σε χιλιάδες developers
Γρήγορο
Εύκολο branching
Atomic commits
Ανθεκτικό
7. Πως δουλεύει?
Πολλαπλά ισότιμα repositories
Αποθηκεύει αντικείμενα, όχι αρχεία
Ένα commit είναι ένα σύνολο refs προς συγκεκριμένα αντικείμενα
Ομοίως branches, tags
Πανεύκολο και ταχύτατο branching
Συλλογή εντολών και extensions a la Linux
git svn, git flow, git tfs
Και βιβλιοθήκη
Libgit
Libgitsharp (χρησιμοποιείται στον TFS)
Και στην εφαρμογή σας
10. Δημιουργία repo
Τοπικά
Create empty repo
Προσθήκη .gitignore
Από το IDE
Πρώτα στο server
Δημιουργία νέου repo
Αρχικά αρχεία όπως readmes, .gitignore
11. Branching
git checkout –b branch_name
git branch branch_name
Ταχύτατο
Ευνοεί τη δημιουργία πολλών μικρών branches
Όσο μικρότερο σε διάρκεια το branch, τόσο ευκολότερο το merge
master A
A1
A2 Tag1
12. Merging
Ουσιαστικά ανανεώνονται τα refs του target branch
Fast-forward των commits aν δεν έχουν γίνει αλλαγές στο target
Αλλιώς merge αρχείων, έλεγχος για conflicts
13. Conflicts
Don’t Panic! Πάντα υπάρχει και το abort!
Και είναι μόνο τοπικά!
Και δεν είναι συχνά – ακόμα και αν έχει αλλάξει το ίδιο αρχείο
Commit επιτρέπεται μόνο όταν γίνουν όλα resolve
14. Workflows
Δεν επιβάλλει συγκεκριμένο flow
Εύκολο branching εύκολη προσαρμογή
Διαφορετικά flows ανάλογα με τις ανάγκες
15. Ατομικό μέγεθος
Συχνά τοπικά commits
Amends αν ξεχαστεί τίποτε
Pull από το server
Conflict resolution
Push στο server
Όχι amend μετά το Push!
Τυπική διαδικασία σε κάθε περίπτωση
Τοπικά branches για κάθε task, merge πριν το push
16. GitHub flow
Κατάλληλο για open source projects
Τοπικά branches ανά feature
Δημιουργία Pull Request στο τέλος και υποβολή
Συζήτηση, τροποποίηση του pull request
Merge του διορθωμένου PR
17. Gitflow
Κατάλληλο για μακροχρόνια
projects
Υποστήριξη από εργαλεία για
εύκολη δημιουργία, merge,
squash branches και commits
Git flow feature start MyF1
SourceTree
Visual Studio Extension
18. Continuous Deployment
Ανάπτυξη στο master
Βάι το καθηγητή, βάι ...
Όχι ακριβώς
Βραχύβια local branches
Features στο master
Ανενεργά μέσω Feature switches
Στιβαρό testing
Όσο μικρότερες οι αλλαγές τόσο ευκολότερο το testing
19. Continuous Deployment - 2
Push-to-Deploy
Βασική υποστήριξη από το 2.3 (είμαστε 2.6.3)
git config receive.denyCurrentBranch updateInstead
20. Migrations
Git svn, git tfs, git cvs
Προσοχή με τα amends!
Git svn commands for cloning
Δεν χειρίζεται tags – στο SVN είναι ξεχωριστά branches
Svn2git
21. Git Server?
Τοπικά σε ένα άλλο folder
Σε ένα file share
Ως daemon
Μέσω server εφαρμογών/υπηρεσιών όπως
Gitlab
Gitolite
TFS
GitHub
…
25. Pluralsight Courses
ΕΙΝΑΙ ΤΣΑΜΠΑ με το Dev Essentials
Introduction to Git link
Git Fundamentals link από τον James Kovacs
Git for VS Developers link
Github for Windows Developers link
Advanced Git link
26. Χρήσιμα Links
http://git-scm.com
TortoiseGit link
SourceTree link
GitFlow Tutorial link
Gitflow home link
Gogs, Docker on Raspberry Pi link
Βιβλία (έχουμε εκπτώσεις σε O’Reilly, Manning!)
Git Pocket Guide με How Do I link O’Reilly
Learning Git in a month of Lunches link