Accueil > Blog-notes > Git c’est facile

Git c’est facile

Introduction

J’ai jusqu’ici utilisé exclusivement Subversion comme outil de versionnage. Mes premiers pas sous Git, sur un projet collaboratif, ont été un peu laborieux.

Une des raisons est que j’essaye toujours de me ramener à ce que je connais et, dans le cas présent, de faire avec Git ce que j’aurais fait avec SVN dans le même contexte.

Aussi n’ai-je pas vraiment hésité quand Christophe a proposé son atelier de formation Git avancé. En voici ce que j’en ai retenu, en espérant que ça pourra vous être aussi profitable qu’à moi !

Pour plus de facilité j’ai découpé mes notes en plusieurs articles dont voici le premier.

3 états sinon rien

Une notion importante que je n’ai vraiment comprises que lors de cette formation est que Git gère 3 états différents des fichiers (qui correspondent à 3 zones de travail)

  • un fichier est commité lorsqu’il a bien été enregistré dans la base locale, appelée aussi repository, ou Git directory
  • un fichier est modifié lorsqu’il a changé mais n’a pas encore été marqué pour aller dans le prochain commit. Il est encore dans le working directory ou répertoire de travail. On dira parfois aussi qu’il est unstaged par opposition au dernier état
  • un fichier est staged ou indexé lorsqu’on l’a marqué pour aller dans le prochain commit, dans un état donnée. L’ensemble des fichiers marqués pour le prochain commit est appelé index ou staging area.

En sus, on parlera aussi parfois des fichiers non versionnés ou untracked : ce sont les fichiers qui ne sont pas encore pris en charge par Git, dans aucun des 3 états ci-dessus.

3 états dans Git
Schéma par Scott Chacon, sous licence CC-by-nc-sa 3.0

Ces 3 états et en particulier la distinction entre le répertoire de travail et l’index des modifications à commiter sont vraiment importants dans un certain nombre d’opérations qui sont alors rendues possibles par Git.

N’hésitez pas à lire l’explication et le schéma de Scott sur ce point avant d’aller plus loin.

Rien à perdre

La deuxième chose importante à retenir est simple : à partir du moment où vous avez commité des modifications, il est très difficile de les perdre, et il y a toujours moyen de les récupérer. Même après une manipulation hasardeuse de retour en arrière dans l’historique.

Les différentes façon de naviguer dans l’historique et de retrouver un commit seront abordées dans un article à suivre, mais retenez ceci : vous pouvez y aller en confiance !

Les bons outils

L’ensemble de mes notes sera illustré par l’utilisation de GIT en ligne de commande. Mais les notions et les modes de fonctionnement de Git explicités ici faciliteront aussi la compréhension et la manipulation à travers un outil interfacé, comme l’excellent et très complet Git-tower pour Mac OS X. Si on utilise Github, on peut aussi avantageusement utiliser Github pour Mac, gratuit.

Pour bien commencer, configurez les réglages par défaut de GIT, ainsi que le prompt. Vous allez vite voir que cela fait une grande différence dans l’utilisation au quotidien de Git !

Cette étape est ici illustrée dans le cas de Mac OS. La personnalisation des réglages devrait s’appliquer assez facilement sous linux, mais il conviendra de l’adapter pour Windows.

Configuration

Voici une configuration type pour Git (fournie par Christophe)

Il faut mettre cette configuration dans un fichier .gitconfig, de votre répertoire utilisateur ~/

Vous veillerez bien à remplacer les deux premières configuration name et email par votre nom et votre adresse mail qui apparaitront alors dans les crédits des commits dans devoir le préciser sur chaque nouveau dossier versionné.

Vous pouvez repérer aussi les raccourcis introduits par le fichier : ci, co, fp et lg, dont on reparlera dans la suite.

Personnaliser le prompt

Git est fourni avec un script d’auto-complétion que vous allez activer :

Dans le cas où vous ne trouveriez pas le script dans votre installation, vous pouvez le télécharger en bas de cet article, pour le placer de la même façon dans votre dossier utilisateur.

Editez ensuite le fichier ~/.profile (en le créant si nécessaire) et ajoutez y (à la fin) les lignes :

Lorsque vous avez fait ceci, fermez votre terminal et relancez le pour bénéficier de votre personnalisation.

Ces petits réglages vont vous rendre bien des services :

  • En premier lieu, vous allez maintenant bénéficier d’une auto-complétion très pratique à l’usage : si vous saisissez git checkout or+tab vous obtenez directement git checkout origin/master. Cela marche notamment pour les noms de tag, de branche, de stash... ce qui permet de ne plus hésiter à utiliser des noms longs explicites, pour plus de confort.
  • Vous bénéficiez aussi d’un prompt qui affiche automatiquement la branche active, et le statut du repository courant dès que vous êtes dans un dossier versionné avec Git.
    Exemple :

Vous pouvez voir ici que la branche master est utilisée pour mon répertoire gitsession. Le statut est indiqué sous forme d’un flag :

Flag de statut du repository
 % il y a des fichiers non versionnés (untracked)
* il y a des fichiers versionnés modifiés mais non indexés (unstaged)
+ il y a des fichiers dans l’index (staged), prêts à commit
# le repository est en état d’initial import (on vient de faire un git init)
$ indique qu’il y a un stash en cours, à ne pas oublier de rapatrier (La notion de stash sera abordée dans un article à suivre)

Vous verrez plus tard que le prompt indique aussi l’état d’un merge en cours, d’une bissection pour rechercher un bug ...

Ressources en ligne

Pour compléter mes notes, vous pourrez sans hésiter vous reporter aux ressources suivantes :

Voilà pour ce premier article d’introduction, avant d’entrer dans le vif du sujet

— 24 février 2011

Documents joints

Vos commentaires

Vos commentaires

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Suivre les commentaires : RSS 2.0 | Atom