際際滷

際際滷Share a Scribd company logo
Introduzione a Git 9 Giugno
2016
Sponsored by
Sponsor
Paolo Fulgoni
JAVA
Desktop
app
.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
Working
copy
Working
copy
Central
repo
Intro
2/24
SCM distribuito (esempio centralizzato)
Dev #1
Dev #2
Working
copy
Working
copy
Central
repo
Local
repo
Local
repo
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 desiderato
scartando 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 branch
git 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/24
Repository 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 LATTENZIONE!
[DOMANDE?]
credits
 Git homepage
https://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

More Related Content

Introduzione a git