Git for dummies
Click here to load reader
-
Upload
claudio-mig -
Category
Documents
-
view
489 -
download
0
Transcript of Git for dummies
Git for Dummies
a cura di Claudio Mignanti
Copyright CC-BY-SA
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
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
GIT INIT
Git si presenta come un sistema distribuito, ogni copia del repository git rappresenta una copia completa e indistinguibile. NON è un'architettura 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
GIT CONFIG
Configurare la mail e il nome con cui firmerete i commit.
git config user.name "Gatto Silvestro"
git config user.email [email protected]
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
GITK
$ gitk –all
Commit selezionato
Storia del repository
ID sha1 del commit selezionato
Modifiche e commenti del Commit in questione
GIT BRANCH
$ git checkout 5d53347a5 -b wip #creo branch wip
un po di commit sia su master che su wip e ottengo...
Con $ git branch <nome> seleziono il branch su cui lavorare
Branch wip (attivo in grassetto) con due commit nuoviBranch master con un nuovo commit
Il file pluto esiste subranch wip ma non su master
Pippo esiste su master ma non su wip
Commit attivo in giallo
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
GIT REBASE, GIT CHERRY-PICK
Supponiamo di voler prelevare UN commit da un branch per metterlo in cima ad un'altro 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
GIT REBASE, GIT CHERRY-PICK
Prima 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)
GIT REBASE, GIT CHERRY-PICK
Con $ git rebase -i <sha id>Possiamo riordinare, fondere, o eliminare commit che 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
GIT REBASE, GIT CHERRY-PICK
Prima del rebase erano4 commit in questo ordine
Come prima cosa ho messo il makefileHo aggiunto pluto prima di pippo riordinandoliHo ”fuso” 78a98d7 con aa044574 con squash
GIT REBASE, GIT CHERRY-PICK
Come prima cosa ho messo il makefileHo aggiunto pluto prima di pippo riordinandoliHo ”fuso” 78a98d7 con aa044574 con squash
Mhhh
Per essere un git for dummies si è complicato abbastanza
Il tutto con solo 4 commit :)
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.
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
Un caso reale
EOF
?
Copyright CC-BY-SAClaudio Mignanti <c.mignanti gmail.com>