introduzione a git

29
Introduzione a Git 9 Giugno 2016 Sponsored by

Upload: klab

Post on 14-Jan-2017

249 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Introduzione a git

Introduzione a Git 9 Giugno

2016

Sponsored by

Page 2: Introduzione a git

Sponsor

Page 3: Introduzione a git

Paolo Fulgoni

JAVA

Desktopapp

.Net

http://about.me/paolofulgoni

Page 4: Introduzione a git

Cos’è GIT?

• SCM: Source Control Management• Inventato da Linus Torvalds• git == ??• Ideato per la collaborazione• Command-line tool

scripting!• Molte GUI disponibili

Intro

1/24

Idiota

Page 5: Introduzione a git

SCM centralizzato

Dev #1

Dev #2

Workingcopy

Workingcopy

Centralrepo

Intro

2/24

Page 6: Introduzione a git

SCM distribuito (esempio centralizzato)

Dev #1

Dev #2

Workingcopy

Workingcopy

Centralrepo

Localrepo

Localrepo

Intro

3/24

Page 7: Introduzione a git

SCM distribuito: vantaggi (alcuni)

• Connettività non blocca il lavoro• Operazioni in locale rapide• Lavorare in privato, poi decidere cosa pubblicare• No single point of failure

Intro

4/24

Page 8: Introduzione a git

Installazione

• Installer/pacchetto per tutti i sistemi operativi• No server, no demoni/servizi in background• Configurare username e email

Repo locale

5/24

Page 9: Introduzione a git

Creazione di un repo

• Immediato, no richiesta a sys admin• Cartella [.git]: il repo è tutto lì!

Repo locale

6/24

git init crea il repository

Page 10: Introduzione a git

Preparazione di un commit

• Commit = instantanea del mio progetto• Passaggio intermedio: staging area (o index)

Repo locale

7/24

git add

git reset

aggiunge allo stage

ripulisce lo stage

Page 11: Introduzione a git

Creazione del commit

• Attributi del commit• Parent: commit da cui è stato creato• Hash: identificativo universale del commit• …

• HEAD: puntatore al commit corrente

git commit crea… il commit

Repo locale

8/24

Page 12: Introduzione a git

Esaminare il repository

git status mostra stato working directory e stage

Repo locale

9/24

git log mostra storico dei commit

git checkout carica un commit presente nel repo

Page 13: Introduzione a git

[DEMO]

Repo locale

10/24

Page 14: Introduzione a git

Annullare le modifiche

git revert <commit> annullo modifiche di un unico commit

aggiungendo un nuovo commit

git reset <commit>

sposto il branch corrente al commit desideratoscartando i commit

Repo locale

11/24

Non distruttivo

Distruttivo

Page 15: Introduzione a git

Repo locale

12/24

[DEMO]

Page 16: Introduzione a git

Branch

• branch• staccarsi dalla linea di sviluppo principale• lavorare su una nuova linea indipendente

• In git: branch == puntatore ad un commit• master è il default branch

Repo locale

13/24

Page 17: Introduzione a git

Creare un branch

git branch

crea/rimuove un branchgit checkout <branch> sposta HEAD su un branch

Repo locale

14/24

Page 18: Introduzione a git

Merge di un branch

• Fast-forward: sposta il puntatore in avanti• 3-way merge: crea un nuovo commit con due genitori

git merge unisce due branch

Repo locale

15/24

Page 19: Introduzione a git

Merge fast-forward

prima dopo

Repo locale

16/24

Page 20: Introduzione a git

Merge 3-way

prima dopo

Repo locale

17/24

Page 21: Introduzione a git

Repo locale

18/24

[DEMO]

Page 22: Introduzione a git

Sync

19/24Repository remoti

• repo sono mondi isolati, che possono sincronizzarsi• remote: link ad altro repo con il quale posso sincronizzare• origin: nome default repo remoto• bare repo: repo senza working folder

git remote aggiunge/rimuove un repo remoto

Page 23: Introduzione a git

Inviare ad un repo remoto Sync

20/24

git push allinea branch remoto al branch locale (inviando commit)

prima dopo

Page 24: Introduzione a git

Ora sapete come comportarvi… Sync

21/24

Page 25: Introduzione a git

Ricevere da un repo remoto Sync

22/24

git clone clona un intero repo remoto

git fetch importa i commit da un repo remoto nel repo locale

git pull allinea branch locale ad un branch remoto (fetch + merge)

Page 26: Introduzione a git

Fetch e Pull Sync

23/24

prima fetch pull

Page 27: Introduzione a git

Sync

24/24

[DEMO]

Page 28: Introduzione a git

GRAZIE PER L’ATTENZIONE!

[DOMANDE?]

Page 29: Introduzione a git

credits

• Git homepagehttps://git-scm.com• Git Pro Book

https://git-scm.com/book• Getting Git Right (by Atlassian)

https://www.atlassian.com/git/• GitHub Training Kit

https://github.com/github/training-kit