Git for dummies

798 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
798
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Git for dummies

  1. 1. Git for Dummies a cura di Claudio Mignanti Copyright CC-BY-SA
  2. 2. In{troduzione,stallazione} Git è un sistema software di controllo versione distribuito, direttamente utilizzabile da riga di comando. Git è un termine gergale britannico per indicare una persona stupida o sgradevole, a causa della difficoltà di utilizzo delle prime versioni, il programma è stato definito "il sistema di controllo versione progettato per farti sentire più stupido di quanto tu non sia". Installazione su debian based: apt-get install git-core gitk git-gui
  3. 3. Lista dei comandi essenziali git init git config git status, git commit gitk git branch git merge git cherry-pick, git rebase git {push,pull,fetch} git remote, git clone
  4. 4. GIT INIT Git si presenta come un sistema distribuito, ogni copia del repository git rappresenta una copia completa e indistinguibile. NON è unarchitettura client-server! $ mkdir /tmp/test; cd /tmp/test $ git init Initialized empty Git repository in /tmp/test/.git/ La cartella /tmp/test contiene un nuovo git repository
  5. 5. GIT CONFIG Configurare la mail e il nome con cui firmerete i commit. git config user.name "Gatto Silvestro" git config user.email gatto.s@cartoon.com
  6. 6. GIT STATUS, GIT COMMIT $ touch newfile $ git status # Untracked files: ... # newfile $ git add newfile $ git commit --message="aggiungo newfile" [master (root-commit) 7e6c98e] aggiungo newfile TODO: provare le stesse cose usando $ git gui
  7. 7. GITK Storia del repository $ gitk –all Commit selezionatoID sha1 del commitselezionatoModifiche e commenti delCommit in questione
  8. 8. GIT BRANCH $ git checkout 5d53347a5 -b wip #creo branch wip un po di commit sia su master che su wip e ottengo...Branch wip (attivo in grassetto) con due commit nuovi Branch master con un nuovo commitCommit attivo in giallo Il file pluto esiste su branch wip ma non su master Pippo esiste su master ma non su wip Con $ git branch <nome> seleziono il branch su cui lavorare
  9. 9. GIT MERGE Per unire le modifiche di due branch diversi uso merge $ git checkout master $ git merge wip Merge made by recursive. pluto | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 pluto
  10. 10. GIT REBASE, GIT CHERRY-PICK Supponiamo di voler prelevare UN commit da un branch per metterlo in cima ad unaltro branch $ git checkout 7e6c98ed0 -b fork Switched to a new branch fork $ git commit --message="aggiunto makefile" [fork 4768253] aggiunto makefile $ git checkout master Switched to branch master $ git cherry-pick 4768253
  11. 11. GIT REBASE, GIT CHERRY-PICKPrima del cherry-pick Una copia del commit iniziale è posta in cima al branch master. Il commit iniziale con hash 4768253 non è stato spostato ne i commit successivi/precedenti (se ci sono) sono entrati a far parte di master (come nel merge)
  12. 12. GIT REBASE, GIT CHERRY-PICKCon $ git rebase -i <sha id>Possiamo riordinare, fondere, o eliminare commitche sono tra il checkout attuale e <sha id>$ git checkout master$ git branch pre-rebase #salvo la situazione su nuovo branch$ git rebase -i 5d53347a5
  13. 13. GIT REBASE, GIT CHERRY-PICKCome prima cosa ho messo il makefileHo aggiunto pluto prima di pipporiordinandoliHo ”fuso” 78a98d7 con aa044574 consquash Prima del rebase erano 4 commit in questo ordine
  14. 14. GIT REBASE, GIT CHERRY-PICK Come prima cosa ho messo il makefile Ho aggiunto pluto prima di pippo riordinandoli Ho ”fuso” 78a98d7 con aa044574 con squash
  15. 15. Mhhh Per essere un git for dummies si è complicato abbastanza Il tutto con solo 4 commit :)
  16. 16. GIT {PUSH, PULL, FETCH} Quando ci si vuole sincronizzare con un repository remoto si usano questi comandi. git push invia i cambiamanti locali in remoto. git fetch preleva i cambiamente remoti SENZA applicarli in locale (così puoi ispezzionarli...) git pull è come git fetch ma applica i cambiamenti remoti in locale Git è decentralizzato quindi ogni copia può essere vista come un repository remoto.
  17. 17. GIT REMOTE, GIT CLONE git remote ti permette di gestire i repository remoti. Es: git remote add test http://mysite.org/git/test git clone si può usare per clonare un repository remoto noto e configurare automaticamente i riferimenti remoti (senza usare git remote) Es: git clone http://mysite.org/git/test
  18. 18. Un caso reale
  19. 19. EOF ? Copyright CC-BY-SA Claudio Mignanti <c.mignanti gmail.com>

×