introduzione a git
Post on 14-Jan-2017
249 Views
Preview:
TRANSCRIPT
Introduzione a Git 9 Giugno
2016
Sponsored by
Sponsor
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