introduzione a git

Post on 14-Jan-2017

249 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introduzione a Git 9 Giugno

2016

Sponsored by

Sponsor

Paolo Fulgoni

JAVA

Desktopapp

.Net

http://about.me/paolofulgoni

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

SCM centralizzato

Dev #1

Dev #2

Workingcopy

Workingcopy

Centralrepo

Intro

2/24

SCM distribuito (esempio centralizzato)

Dev #1

Dev #2

Workingcopy

Workingcopy

Centralrepo

Localrepo

Localrepo

Intro

3/24

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

Installazione

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

Repo locale

5/24

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

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

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

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

[DEMO]

Repo locale

10/24

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

Repo locale

12/24

[DEMO]

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

Creare un branch

git branch

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

Repo locale

14/24

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

Merge fast-forward

prima dopo

Repo locale

16/24

Merge 3-way

prima dopo

Repo locale

17/24

Repo locale

18/24

[DEMO]

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

Inviare ad un repo remoto Sync

20/24

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

prima dopo

Ora sapete come comportarvi… Sync

21/24

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)

Fetch e Pull Sync

23/24

prima fetch pull

Sync

24/24

[DEMO]

GRAZIE PER L’ATTENZIONE!

[DOMANDE?]

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

top related