Git
Contents
Concetti Fondamentali
Git è un sistema di controllo versione distribuito. Questo vuol dire che ogni copia locale è un repository a se stante. Quindi a differenza di SVN la gestione dei repository è più complessa, con il vantaggio di una maggiore versatilità. Avere un repository locale significa che è possibile committare in locale il proprio lavoro. Una volta committato in locale il proprio lavoro si può sincronizzare il repository locale con quello remoto. Si chiama pull l'operazione che aggiorna il repository locale con quello remoto. Si chiama push l'operazione che invia i commit locali sul repository remoto. Per poter eseguire correttamente un push, è necessario che l'ultimo commit locale e l'ultimo commit remoto siano lo stesso, il che significa che per effettuare un push, è necessario, a meno di non aver il repository locale già aggiornato, effettuare un pull.
Il repository locale mantiene la storia locale dei commit. Tuttavia è possibile effettuare modifiche sul repository locale. Per aggiungere a un commit modifiche locali e nuovi file, è necessario aggiungere i file (sia quelli nuovi, sia quelli modificati) all'indice del repository. Ogni volta che si effettua un commit verranno considerati solo i file presenti nell'indice, tutte le altre modifiche locali non verranno aggiunte al commit, ma resteranno nel repository.
Può capitare, se più persone lavorano a un progetto, che la copia sul repository remoto abbia subito modifiche rispetto all'ultimo commit del repository locale, ovvero che le due versioni (locale e remoto) abbiano un antenato in comune, ma poi si siano divise. In questo caso è necessario effettuare un merge. Se i due rami non hanno modifiche conflittuali, il merge sarà automatico. Se i due rami presentano delle modifiche concorrrenti, o modifiche che git non è in grado di risolvere (ad esempio cambio intentazione e spaziatura differenti) si dovrà procedere a un merge manuale. In caso di versioni discordanti è necessario ricordarsi di procedere nelseguente modo:
- effettuare il commit del proprio lavoro
- effettuare il pull del repository remoto
- effettuare il merge
- effettuare il push del repository
Che sia un merge automatico o un merge manuale, l'operazione si conclude sempre con un commit.
Guida base git
Segue una piccola guida minimale per utilizzare git in maniera semplice. per imparare a usarlo in maniera avanzata consigliamo di cercare tutoria su internet.
creazione repository git
Solo se avete un server git personale:
server# sudo -u git git init --bare /var/git/repo_name
una volta creato il repository sul vostro server, o su un provider esterno (github, assembla, bitbucket)
client$ git clone git@server:/var/git/repo_name local_repo_name
primo commit
cd local_repo_name
crei dei file da committare
git add -A
git config --global user.email email
git config --global user.name username
git commit
git push origin master
primo pull
cd local_repo_name git pull origin master
successivi commit
git add -A
git commit
git push
successivi pull
git pull