GIT est un outil fantastique mais, parfois, on peut se retrouver dans des situations particulièrement désagréables (collisions avec un dépôt distant par exemple, même si vous êtes le seul à publier...). Pour limiter les risques et comprendre ce qu'il faut faire, voici quelques commandes qui vous permettront de démarrer sans trop (je l'espère) de difficultés.
N'hésitez-pas à consulter la documentation officielle sur http://git-scm.com/
Installer GIT
Dans Ubuntu, installez les paquetages suivants :
apt-get install git git-gui gitk git-man meldConfigurer les paramètres généraux
git config --global user.name "Eric Quinton"git config --global user.email "monadresse@gmail.com"Dans le dossier considéré :
git initOpération particulièrement importante. N'oubliez surtout pas les fichiers qui contiennent vos identifiants (de base de données, par exemple), sinon ils seront visibles par tous !
ouvrez le fichier .git/info/exclude. Voici une liste (non exhaustive, à adapter) de fichiers à ne pas suivre (projet PHP utilisant SMARTY) :
*~param.inc.phpgacl.ini.phptemplates_c/*.project.buidpath.settings.settings/**/templates_c/*Remarque : avant toute opération, vérifiez l'état de votre dépôt avec la commande :
git statusgit clone [URL] [chemin_de_creation]Le chemin dans lequel vous clonez le dépôt distant doit être vide avant l'opération.
Le dépôt distant est déclaré automatiquement dans votre dépôt local, sous le nom de origin.
git add .git commit -m "message"git statusLa commande git add . va intégrer tous les fichiers nouveaux. Si vous souhaitez faire des commit différentiés selon les fichiers (voire les parties de fichiers), remplacez le point par le nom du fichier concerné.
La commande git status doit vous retourner : working directory clean. Tant que vous n'avez pas ce message, n'allez pas plus loin, et faites le nécessaire pour rendre votre dépôt propre.
Uniquement à faire si vous n'avez pas exécuté, auparavant, la commande clone.
git remote add [nom_donné_localement] [URL]git push [nom_donné_localement] masterRécupérer les dernières modifications depuis le dépôt distant
git pull [nom_donné_localement] masterPonctuellement :
git update-index --assume-enchanged [fichier]De façon définitive :
rajoutez le fichier à exclure dans .git/info/exclude, puis :
git rm --cached [fichier|chemin]par exemple :
git rm --cached */templates_c/*supprime toutes les compilations de templates smarty dans votre arborescence GIT.
Les étiquettes sont associées à un commit.
git statusgit add .git commit -m "version 1.0"git showCette dernière instruction vous permet de visualiser l'identifiant du commit (il est également affiché après la commande git commit)
git tag -a v1.0 -m "version 1.0" [identifiant_commit]L'identifiant du commit est une séquence de chiffres hexadécimaux. Il s'agit du début de la chaîne affichée via git show. En général, le fait de prendre les 6 ou les 8 premiers caractères vous évitent les risques de collisions, dans le contexte considéré.
git show v1.0affiche la version étiquetée.
Pour mettre à jour le dépôt distant :
git push [nom_donné_localement] mastergit push [nom_donné_localement] v1.0Supprimez d'abord l'étiquette dans votre dépôt local :
git tag -d v1.0puis supprimez l'étiquette dans le dépôt distant :
git push --delete [nom_donné_localement] v1.0Les branches sont particulièrement utiles pour éviter de mélanger le code, surtout si vous travaillez à plusieurs. Au minimum, prévoyez :
master : la branche principale, qui contient les versions en productiondevelop : la branche dédiée au développement, fusionnée à chaque nouvelle version dans mastergit branchAffiche la liste des branches existantes, la branche active étant précédée d'une étoile.
git branch [nom_de_la_branche]Crée une nouvelle branche.
git checkout [nom_de_la_branche]Bascule dans la branche considérée
git merge [nom_de_la_branche_a_fusionner]Fusionne la branche indiquée dans la branche courante.
git merge --abortAbandonne une fusion en cours, notamment s'il y a des conflits que vous ne souhaitez pas gérer immédiatement.
C'est une opération utile pour réaliser une mise en production : vous n'avez pas besoin d'installer tout le code git dans un serveur. L'opération n'est réalisable qu'à partir du dépôt local (certains dépôts web vous proposent des fonctionnalités équivalentes, mais qui intègrent de la programmation).
Le principe est de créer un fichier zip qui correspond soit à l'état de votre branche, soit à une étiquette :
git archive --format=zip v1.0 > /tmp/appli_v1.0.zipIci, vous avez créé un fichier au format zip correspondant à l'état de votre dépôt pour l'étiquette v1.0.
À la racine de votre application, là où est le dossier .git, lancez la commande git gui. Vous disposerez alors de 3 applications intégrées les unes aux autres, qui permettent :
git gui : réalisation des commit, gestion du dépôt distant, sélection des branches et fusions, etc.gitk : visualisation de l'arborescence des commit, rajout des étiquettesmeld : gestion des conflits au sein des fichiersNe stockez jamais dans votre arborescence GIT les fichiers qui contiennent les paramètres de connexion aux bases de données (voir ci-dessus le fichier des exclusions).
Si vous utilisez un dépôt git dans un serveur web (pratique en phase de développement, et cela peut être une option - pas forcément recommandée - pour la mise en production), il peut être judicieux d'interdire l'accès au dépôt depuis un navigateur. pour cela, créez, dans le dossier .git, le fichier .htaccess, et insérez dans celui-ci les lignes suivantes :
order deny, allowdeny from all