Git/Passer de Subversion à Git

< Git

Si vous maîtrisez subversion, vous aller sûrement être perturbé dans votre passage à git. En effet, l'écart entre gestion de version centralisée et gestion de version décentralisée est important et ces deux outils ne s'utilisent pas du tout de la même façon même s'il y a des similitudes.

Ce chapitre s'adresse aux personnes qui utilisent subversion et il vise à lever les ambiguité et les confusions qui surgissent quand on découvre git.

Quelques confusions habituellesModifier

Les tags ne sont pas des branches
Dans subversion, on crée un tag par copie du trunk dans un nouveau dossier qui porte le nom du tag. On recrée ainsi toute l'arborescence du trunk dans un dossier (en fait, une branche puisque c'est une dérivation du tronc) du dépôt. Dans git, les tags ne sont pas des branches. Un tag désigne simplement un commit précis du dépôt.
L'opération commit n’envoie aucune information vers le dépôt distant
Dans subversion, commit envoie toutes les modifications réalisées sur votre copie locale vers le dépôt distant. Dans git, commit enregistre les modifications dans votre dépôt local.
L'opération checkout ne récupère pas un dépôt distant mais change la branche courante.

Équivalences entre les commandes git et les commandes subversionModifier

La principale différence entre Git et Subversion (Svn) est que Git possède un dépôt local intermédiaire entre la copie de travail où les fichiers sont modifiables directement et le dépôt distant. Il peut aussi n'y avoir pas de dépôt distant, surtout en début de projet. Cette section suppose qu'un dépôt distant existe, si ce n'est pas le cas, il suffit de ne pas exécuter les commandes le concernant.

Récupérer un dépôt distantModifier

Pour Svn, cela crée une copie de travail. Pour Git, cela crée une copie de travail et un dépôt local.

Svn Git

svn checkout repositoryurl

git clone repositoryurl

Soumettre les modifications localesModifier

Svn Git

svn commit -m message

git add files...
git commit -m message
git push

Mettre à jour son dépôt local / sa copie de travailModifier

Avertissement ! 

Soumettez vos modifications locales avant de mettre à jour pour éviter les conflits et la perte des modifications locales.

Svn Git

svn update

git pull


Ressources externesModifier