Ο βασιλιάς git!
TRANSCRIPT
![Page 1: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/1.jpg)
Ο Βασιλιάς Git!ΠΑΝΑΓΙΩΤΗΣ ΚΑΝΑΒΟΣ
![Page 2: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/2.jpg)
“”
Ο Πόλεμος των VCS τελείωσε και Νικητής είναι το Git!
ΘΡΑΣΥΒΟΥΛΑΣ
![Page 3: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/3.jpg)
Git εδώ, Git εκεί...
Δημοφιλέστερο VCS - 43% σύμφωνα με το Eclipse Foundation 27% των αγγελιών στο ITJobsWatch, διπλάσιες από κάθε άλλο
VCS Native υποστήριξη στον TFS Φάτσα-κάρτα στο Visual Studio Code MS Connect 2015 Git Git Git
Τυχαίο;
![Page 4: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/4.jpg)
Έτυχε ποτέ;
Να είναι κλειδωμένο το αρχείο που χρειάζεται; Να θέλουν 10 devs το ίδιο αρχείο; Να θέλετε να κρατήσετε μισοτελειωμένη δουλειά πριν από
επικίνδυνες αλλαγές; Να χρειαστεί να πετάξετε αλλαγές μιας βδομάδας για ένα λάθος
της Τετάρτης; Να μπλέκονται διάφορες αλλαγές σε ένα και μοναδικό branch; Να φοβάστε να φτιάξετε ένα branch γιατί θα πάρει χρόνια; Να παγώσετε δουλειά γιατί κάτι έσκασε στην παραγωγή; Και μετά
να παλεύετε να περάσετε τις διορθώσεις; Να χάσετε το ένα και μοναδικό repository;
![Page 5: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/5.jpg)
Έτυχε ποτέ;
Να σας κάψουν την εταιρεία; Πολλά repos Μεταφορά αλλαγών, συμπίεση Πανεύκολο replication
![Page 6: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/6.jpg)
Λίγη ιστορία
Δημιουργήθηκε από το Linus Torvalds Version Control για ανάπτυξη του Linux Στόχοι
Scale σε χιλιάδες developers Γρήγορο Εύκολο branching Atomic commits Ανθεκτικό
![Page 7: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/7.jpg)
Πως δουλεύει?
Πολλαπλά ισότιμα repositories Αποθηκεύει αντικείμενα, όχι αρχεία Ένα commit είναι ένα σύνολο refs προς συγκεκριμένα αντικείμενα Ομοίως branches, tags Πανεύκολο και ταχύτατο branching Συλλογή εντολών και extensions a la Linux
git svn, git flow, git tfs Και βιβλιοθήκη
Libgit Libgitsharp (χρησιμοποιείται στον TFS) Και στην εφαρμογή σας
![Page 8: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/8.jpg)
Πολλαπλά Repos
Public Repo
Dev 1Dev 2Dev 3
Team Repo
Other Team
![Page 9: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/9.jpg)
Clients
Console TortoiseGit Git clients
Github for Windows SourceTree IDEs
![Page 10: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/10.jpg)
Δημιουργία repo
Τοπικά Create empty repo Προσθήκη .gitignore Από το IDE
Πρώτα στο server Δημιουργία νέου repo Αρχικά αρχεία όπως readmes, .gitignore
![Page 11: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/11.jpg)
Branching
git checkout –b branch_name git branch branch_name Ταχύτατο Ευνοεί τη δημιουργία πολλών μικρών branches Όσο μικρότερο σε διάρκεια το branch, τόσο ευκολότερο το
mergemaste
r AA1A2 Tag1
![Page 12: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/12.jpg)
Merging
Ουσιαστικά ανανεώνονται τα refs του target branch Fast-forward των commits aν δεν έχουν γίνει αλλαγές στο target Αλλιώς merge αρχείων, έλεγχος για conflicts
![Page 13: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/13.jpg)
Conflicts
Don’t Panic! Πάντα υπάρχει και το abort! Και είναι μόνο τοπικά! Και δεν είναι συχνά – ακόμα και αν έχει αλλάξει το ίδιο αρχείο Commit επιτρέπεται μόνο όταν γίνουν όλα resolve
![Page 14: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/14.jpg)
Workflows
Δεν επιβάλλει συγκεκριμένο flow Εύκολο branching εύκολη προσαρμογή
Διαφορετικά flows ανάλογα με τις ανάγκες
![Page 15: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/15.jpg)
Ατομικό μέγεθος
Συχνά τοπικά commits Amends αν ξεχαστεί τίποτε Pull από το server Conflict resolution Push στο server Όχι amend μετά το Push!
Τυπική διαδικασία σε κάθε περίπτωση Τοπικά branches για κάθε task, merge πριν το push
![Page 16: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/16.jpg)
GitHub flow
Κατάλληλο για open source projects Τοπικά branches ανά feature Δημιουργία Pull Request στο τέλος και υποβολή Συζήτηση, τροποποίηση του pull request Merge του διορθωμένου PR
![Page 17: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/17.jpg)
Gitflow Κατάλληλο για μακροχρόνια
projects Υποστήριξη από εργαλεία
για εύκολη δημιουργία, merge, squash branches και commits
Git flow feature start MyF1
SourceTree Visual Studio Extension
![Page 18: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/18.jpg)
Continuous DeploymentΑνάπτυξη στο master
Βάι το καθηγητή, βάι ... Όχι ακριβώς Βραχύβια local branches Features στο master Ανενεργά μέσω Feature switches Στιβαρό testing Όσο μικρότερες οι αλλαγές τόσο ευκολότερο το testing
![Page 19: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/19.jpg)
Continuous Deployment - 2
Push-to-Deploy Βασική υποστήριξη από το 2.3 (είμαστε 2.6.3) git config receive.denyCurrentBranch updateInstead
![Page 20: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/20.jpg)
Migrations
Git svn, git tfs, git cvs Προσοχή με τα amends! Git svn commands for cloning Δεν χειρίζεται tags – στο SVN είναι ξεχωριστά branches Svn2git
![Page 21: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/21.jpg)
Git Server?
Τοπικά σε ένα άλλο folder Σε ένα file share Ως daemon Μέσω server εφαρμογών/υπηρεσιών όπως
Gitlab Gitolite TFS GitHub …
![Page 22: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/22.jpg)
Πάει παντού
Ακόμα και σε Raspberry. Πάνω από docker Παράδειγμα - Gogs
![Page 23: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/23.jpg)
Συντήρηση
Γενικό τοπικό καθάρισμα git gc
Έλεγχος git fsck
Διαγραφή ανενεργών branches Git remote prune origin --dry-run
Search for commit Git show <sha_number>
![Page 24: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/24.jpg)
Αντιμετώπιση ατυχών πρωτοβουλιών
Revert git reset στο remote
Worst case – Clone from some remote AYTO EINAI FEATURE!
![Page 25: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/25.jpg)
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
![Page 26: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/26.jpg)
Χρήσιμα 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
![Page 27: Ο βασιλιάς Git!](https://reader035.vdocuments.mx/reader035/viewer/2022062904/5886dd521a28ab776a8b70a3/html5/thumbnails/27.jpg)