Guillaume Philippon Tutoriel git
Disclamer Vous n’allez pas devenir des guru de git après le tutoriel Parce que je n’en suis pas un Je vous présente quelques manipulations de base et un workflow Mais il en existe d’autres
Un DVCS Il n’y a pas de notion de « serveur » Celle-ci est purement organisationnelle Tout espace de travail peut devenir un dépôt de référence Juste besoin d’un accès au répertoire (ssh, filesystem direct, …)
Pratique Récupéré un dépôt existant (eq. Svn checkout) Git clone ssh://root@onevm-229.lal.in2p3.fr/git/example.git Vérifier le status (svn status) Git status
Pratique Créer les fichiers en local Préparer le commit (svn add) mkdir $HOSTNAME echo ‘My Readme’ > $HOSTNAME/README Préparer le commit (svn add) git add $HOSTNAME
Git add n’est pas svn add Git ne décide pas quoi commité git ne commit pas les fichiers modifiés Il faut forcement faire un git add Mais peut être fait automatiquement lors du commit avec l’option -a
Git commit Git commit ne met a a jour le dépôt de référence Les commits sont locaux à l’espace de travail Les commits doivent être « pusher » pour être disponible sur le dépôt de référence Svn commit peut être traduit par git commit -a; git push
Pratique Commiter les modifications git commit –m ‘Mon commit’ Ajouter automatiquement les modifications dans le commit git commit –a –m ‘Mon commit’ Mettre à jour le dépôt central git push
Git log Permet de lister les commits Contrairement à svn, les nom de commit sont des hash Mais on peut utiliser le mot clef HEAD pour faire référence au dernier commit. commit b7c8d45ee6fe75d62519d223b547444f024a8e0d Author: Guillaume PHILIPPON <philippo@lal.in2p3.fr> Date: Mon Oct 12 10:59:40 2015 +0200 test
Pratique Récupérer les modifications effectué sur le dépôt central (svn update) git pull Ne récupère les modifications QUE de la branche courante !
Les branches (enfin utilisable) Facile a créer git branch $USER Facile à lister git branch Facile de naviguer git checkout $USER Facile a détruire (mais il faut d’abord sortir de la branche) git branch –D $USER Facile à partager git push origin $USER
Les branches Récupérer toutes les branches disponible sur un dépôt distant Git fetch –all Ne merge pas les branches locale On peut lister les branches distante avec git branch -a
Pratique Git branch $USER Git checkout $USER Touch $HOSTNAME/$USER Git add $HOSTNAME/$USER Git commit –m ‘Ma branche’ Git push origin $USER
Pratique Récupérer les branches distantes Git fetch –all Git branch –a Créer une branche locale a partir d’une branche distante Git branch –b testbranche origin/testbranche
Checkout is a T.A.R.D.I.S Permet de voyager dans l’espace et dans le temps Dans l’espace: entre les branches Git checkout testbranche Dans le temps: permet de revenir à une version précédente du dépôt Mais créer une nouvelle branche sans nom Git checkout 8f0616a7b82be38346f49144a278286ee920d7e4 Git branch Une commande pour rentrer a la maison: git checkout master Mais ne permet pas d’annuler les commits On ne fait que créer de nouvelles branches
Revenir en arrière Annule LE commit spécifié Git revert 9e65ec0e4245dba5933e6ce885cd5388efa39977 Annule LE commit spécifié Mais pas les autres commit effectué depuis
Comment merger Les branches sont des espaces de développement Git checkout master Git merge $HOSTNAME Résoudre les conflits Juste un commit (git commit) apres avoir modifié les conflits Peuvent être résolu automatiquement avec –X theirs ou –X ours Merge et commit
Récupérer le travail des autres Tout répository peut devenir une reference Git remote add remote ssh://root@onevm-229.lal.in2p3.fr/git/remote.git Git fetch –all Git branch –a On peut ensuite travailler indépendement sur l’un ou l’autre serveur de référence
Quelques equivalences Svn revert –R . Git reset –hard HEAD Svn update Git pull Svn commit Git commit –a –m ‘’; git push Svn log Git log
J’ai volontairement laisser de coté Git rebase Cherry-pick Et plein d’autres chose…