Git mini guida ai comandi principali
Git è stato ideato e sviluppato da Linus Torvalds ed è forse attualmente il miglior sistema di controllo di versione distribuito. Torvalds ha sempre odiato CVS e SVN in quanto non permettevano lo sviluppo completamente offline del codice. Git ha infatti un approccio diverso in quanto una copia del repository è in locale. Git viene utilizzato per sviluppare il kernel di linux, android ma anche un infinità di altri progetti come jquery mobile, eclipse, kde postgreSQL etc. Ormai gira ovunque anche su windows ed è scaricabile dal sito ufficiale http://git-scm.com/ Esistono anche tantissime interfacce grafiche per linux, windows e Mac Os.
Questa guida da per scontato che vi siate già scaricati e installati git e che sappiate usare la bash di linux o windows.
Git mini guida ai comandi principali
Creare la cartella di progetto
mkdir nomeprogetto.git
Ovviamente prima di digitare i comandi dovete spostarvi all’interno della directory del progetto:
Creare un progetto con git (inizializzare)
git init
Usare il progetto normale solo se vi occorre usare git per progetti personali a cui lavorate solo voi in locale e non dovete condividerlo.
Invece se il progetto è utilizzato da molte persone occorre creare un progetto bara 🙂 r.i.p. Per inizializzare un progetto bara usare questo comando:
git init --bare
Se il progetto è sviluppato da un team di persone e condiviso deve essere bare in questo modo git si comporterà come cvs o svn con tutti i vantaggi di git. Un “bare repository” significa creare un repository centralizzato, ovvero che non contiene files di lavoro, ma solo la cartella .git con le metainformazioni. In pratica si lavora con i file solo sul pc locale, poi si invieranno (pusheranno) i dati al repository centrale con git push.
Checkout e gestione di un repository di git
git clone nomeutente@host:/percorso/del/repository
Qua ci sarebbe da fare un lungo discorso su come fare l’autenticazione automatica tramite chiave ssh per non mettere tutte le volte nome utente e password se riesco scriverò un articolo a parte su questa cosa che è peraltro già spiegata meravigliosamente su github.
https://help.github.com/articles/generating-ssh-keys
Aggiornare il repository in pratica l’update dei file
git pull
Aggiungere files al progetto
git add
oppure per aggiungere TUTTI I FILE
git add *
Rimuovere file dal progetto
git rm
Rimuovere un file senza cancellarlo dal filesystem
git rm --cached
Committare le modifiche (sul repository LOCALE)
git commit -m "Messaggio per la commit"
Se successivamente modificherai i files il comando commit non farà nulla
esplicitamente e dovrai usare il flag -a che committerà automaticamente tutti i file modificati:
git commit -a -m "Changed some files"
oppure dovrai indicare i files che sono stati modificati e che vuoi committare:
git commit -m "change some files" file1 file2
Se non avete definito utenza, vi darà errore ecco come fare:
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
Come dice l’errore vi basterà inserire le informazioni con il comando git config se volete che valgano solo per il progetto corrente non dovete mettere –global altrimenti mettete global e tutti i progetti utilizzeranno stessa email e stesso username.
Inviare le modifiche al progetto principale (PUSH)
git push origin master
Notare che dopo origin c’è la branch ovviamente quella principale è master se si vuole committare su una determinata branch basta cambiare “master” nel branch al quale vuoi inviare le modifiche.
Git Lavorare con i branches
La potenza di git è anche la facilità con cui si gestiscono le branch di un progetto ecco un esempio banale:
Esempio per creare un branch chiamato “feature_x” e switchare per usarlo si fa semplicemente così
git checkout -b feature_x
Per eliminare il branch invece basta fare -d e poi fare il push
git branch -d feature_x
git push origin
Update dei file e merge
Nella directory principale per unificare una branch nella branch principale, il master occorre usare il comando:
git merge
Purtroppo non sempre sono rose e fiori se si lavora in molti sulle stesse porzioni di codice è facile andare in conflitto. Per risolvere eventuali conflitti e flaggarli come risolti.
Ignorare i file di progetto o inutili
Per ignorare i file di eclipse, visualstudio o qualsiasi altro materiale che non volete che git aggiunga automaticamente bisogna creare il file .gitignore dentro al progetto. Su questo repository su github trovate i principali gitignore del pianeta terra 😀
https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore
Archiviare il master ovvero il tarball in git (in locale)
Dopo esservi posizionati all’interno del progetto digitare questo comando
git archive --output=../master.zip master
Risoluzionni problemi elementari:
Attenzione che la prima volta che fate push (una specie di commit sull’originale) essendo un repository vuoto potrebbe darvi errore
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as ‘master’.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to […]
vi basterà usare questo comando per rimettere le cose a posto
git push origin master
ovvero indicare che si sta lavorando nel branch master, una volta eseguito se lo ricorderà e basterà fare semplicemente git push, maggiori info le trovate qui: http://www.thebuzzmedia.com/git-tip-git-push-no-refs-in-common-and-none-specified
Vi ricordo che con git vale la regola “one repository per project” cioè va creato un repository per ogni progetto, ovviamente ognuno fa come vuole e potresti ammucchiare tutti i progetti all’interno di un unico repository, tuttavia se i progetti sono complessi poi sarebbe molto difficile da gestire.
Questa guida si ispira alla fantastica guida tascabile presente a questo indirizzo: http://rogerdudler.github.com/git-guide/index.it.html
Happy gitting (:
Frasi famose su git
Torvalds ha scherzato sul nome git, il cui suono in slang ricorda quello di “persona sgradevole”. Torvalds ha detto: “Sono un bastardo egoista, e chiamo tutti i miei progetti con la mia persona prima ‘Linux’ e ora ‘git’.». La pagina del manuale di git lo descrive come “uno stupido tracker per contenuti”.
Linux Torvalds odia CVS e odia SVN perchè è “CVS FATTO BENE”.
Link utili
http://stackoverflow.com/questions/871/why-is-git-better-than-subversion
Non scappare subito via! Forse ti interessano...
L'articolo ti è stato utile?
Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!