Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Git (/ɡɪt/)    Cosè?    E un sistema di controllo di versione distribuito    Sviluppato e rilasciato nel 2005 da Torval...
Perché “distribuito”?    Ogni sviluppatore ha a disposizione una copia    locale dellintera cronologia di sviluppo    De...
sh*t happens!...
    E adesso?        subversion   git
    Forte supporto allo sviluppo NON lineare    Diramazioni (branches) e fusioni (merge    + rebase!) estremamente fless...
  Ma è veloce??              ASSOLUTAMENTE SI :)Scalabile e veloce specie su grandi progetti(es. cronologia sviluppo loca...
  Ma è veloce??              ASSOLUTAMENTE SI :)Scalabile e veloce specie su grandi progetti(es. cronologia sviluppo loca...
git config --global user.name “Rubens Panfili”git config --global user.email “rubens.panfili@gmail.com”#git config --globa...
Init e                                 commitmkdir test_projectcd test_projectgit initecho “This is a file” > file_Agit st...
Reset e                                                    checkoutecho “This is just another file” > file_Bcp file_B file...
Resetrm file_Bgit statusvim file_Agit add .git statusgit rm file_Bgit statusgit commit -m “something changed”lsgit reset -...
Resetrm file_Bgit statusvim file_Agit add .git statusgit rm file_Bgit statusgit commit -m “something changed”lsgit reset -...
Remotesgit clone https://github.com/rpanfili/test_project.gitcd test_projectcat .git/config
Branchesgit statusgit branch new_featuregit branchgit checkout new_featuregit statusvim index.htmgit add . && git commit -...
EMERGENZA!
Branches - mergegit statusgit checkout mastergit checkout -b hotfix# equivale a# git branch hotfix# git checkout hotfixvim...
Push e remote                                                    branchesgit push origin mastergit log origin/mastergit   ...
Push e remote                                                    branchesgit push origin mastergit log origin/mastergit   ...
Push e remote                                                    branchesgit mergetoolgit commit -m “merged with feature_x...
Push e remote                                                    branchesgit mergetoolgit commit -m “merged with feature_x...
git checkout new_featuregit loggit rebase mastergit log --oneline –graphgit checkout mastergit merge new_featuregit branch...
Remote branchesgit checkout -b feature_foogit push origin feature_foogit fetch origingit branch -agit checkout -b feature_...
Best practice                                                   gitignorecd configcp database.yml database.yml.examplevim ...
Best practice    workflow
Reference    Pro Git    http://git-scm.com/book    Svn2Git    https://github.com/nirvdrum/svn2git    git [command] --he...
Introduzione a git
Introduzione a git
Introduzione a git
Introduzione a git
Introduzione a git
Upcoming SlideShare
Loading in …5
×

Introduzione a git

762 views

Published on

Published in: Technology
  • Be the first to comment

Introduzione a git

  1. 1. Git (/ɡɪt/) Cosè? E un sistema di controllo di versione distribuito Sviluppato e rilasciato nel 2005 da Torvalds Ora utilizzato per organizzare e mantenere grandi progetti di sviluppo
  2. 2. Perché “distribuito”? Ogni sviluppatore ha a disposizione una copia locale dellintera cronologia di sviluppo Decentralizzato Non cè bisogno della “connessione” al server Ognuno è di per sé un server!
  3. 3. sh*t happens!...
  4. 4.  E adesso? subversion git
  5. 5.  Forte supporto allo sviluppo NON lineare Diramazioni (branches) e fusioni (merge + rebase!) estremamente flessibili e potenti permettono di manipolare in maniera facile cronologia di sviluppo Facile organizzare il lavoro degli altri (revisione del codice, collaborazione, etc) e il proprio grazie alla copia locale di tutto
  6. 6.  Ma è veloce?? ASSOLUTAMENTE SI :)Scalabile e veloce specie su grandi progetti(es. cronologia sviluppo locale!) …vediamolo in pratica
  7. 7.  Ma è veloce?? ASSOLUTAMENTE SI :)Scalabile e veloce specie su grandi progetti(es. cronologia sviluppo locale!) …vediamolo in pratica
  8. 8. git config --global user.name “Rubens Panfili”git config --global user.email “rubens.panfili@gmail.com”#git config --global color.status auto#git config --global color.interactive true#git config --global color.branch auto#git config --global color.diff autogit config --global color.ui truegit config --global core.editor vimgit config --global merge.tool vimdiff#git config --global merge.tool meldcat ~/.gitconfig
  9. 9. Init e commitmkdir test_projectcd test_projectgit initecho “This is a file” > file_Agit statusgit add file_Agit statusgit commit -m “Initial commit”git statusgit log
  10. 10. Reset e checkoutecho “This is just another file” > file_Bcp file_B file_Cgit statusgit add .git statusgit reset HEAD file_Cgit commit -m “added file_B”vim file_Agit statusgit checkout -- file_Agit status && cat file_Agit add . && git commit -m “added nothing useful”
  11. 11. Resetrm file_Bgit statusvim file_Agit add .git statusgit rm file_Bgit statusgit commit -m “something changed”lsgit reset --hard HEAD^ls
  12. 12. Resetrm file_Bgit statusvim file_Agit add .git statusgit rm file_Bgit statusgit commit -m “something changed”lsgit reset --hard HEAD^ls
  13. 13. Remotesgit clone https://github.com/rpanfili/test_project.gitcd test_projectcat .git/config
  14. 14. Branchesgit statusgit branch new_featuregit branchgit checkout new_featuregit statusvim index.htmgit add . && git commit -m “added link to index”
  15. 15. EMERGENZA!
  16. 16. Branches - mergegit statusgit checkout mastergit checkout -b hotfix# equivale a# git branch hotfix# git checkout hotfixvim index.htmgit add . && git commit -m “changed H1”git loggit checkout mastervim index.htmgit add . && git commit -m “changed title”git merge hotfixgit log --graph
  17. 17. Push e remote branchesgit push origin mastergit log origin/mastergit branch -agit checkout -b feature_x origin/feature_xgit loggit show HEADgit checkout mastergit merge feature_x
  18. 18. Push e remote branchesgit push origin mastergit log origin/mastergit branch -agit checkout -b feature_x origin/feature_xgit loggit show HEADgit checkout mastergit merge feature_x
  19. 19. Push e remote branchesgit mergetoolgit commit -m “merged with feature_x branch”gitk
  20. 20. Push e remote branchesgit mergetoolgit commit -m “merged with feature_x branch”gitk
  21. 21. git checkout new_featuregit loggit rebase mastergit log --oneline –graphgit checkout mastergit merge new_featuregit branch -d new_feature merge rebase
  22. 22. Remote branchesgit checkout -b feature_foogit push origin feature_foogit fetch origingit branch -agit checkout -b feature_foo origin/feature_foogit pull origin feature_foo
  23. 23. Best practice gitignorecd configcp database.yml database.yml.examplevim database.yml.exampleecho “ndatabase.yml” >> .gitignoregit add .gitignore database.yml.examplegit commit -m “added database config example”
  24. 24. Best practice workflow
  25. 25. Reference Pro Git http://git-scm.com/book Svn2Git https://github.com/nirvdrum/svn2git git [command] --help # or man git [command]

×