Difference between revisions of "Git"

From AIRWiki
Jump to: navigation, search
(Concetti Fondamentali)
(Concetti Fondamentali)
Line 2: Line 2:
  
 
Git è un [http://it.wikipedia.org/wiki/Controllo_versione sistema di controllo versione] distribuito.
 
Git è un [http://it.wikipedia.org/wiki/Controllo_versione sistema di controllo versione] distribuito.
Questo vuol dire che ogni copia locale è un repository a se stante.
+
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=
 
= Guida base git=

Revision as of 16:42, 24 December 2014

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

Comandi utili

status

pull

push

commit

add

stash

checkout

revert

reset

rebase