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.
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 :
% | 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 :
- La ressource la plus complète est celle de Scott Chacon Pro Git. La version en ligne est consultable gratuitement, et vous pouvez acheter la version papier. Ce livre est également partiellement traduit en français et très bien illustré.
- La documentation officielle, bien sûr, complète parfois utilement le livre de Scott Chacon
- On peut trouver aussi pas mal de documentation sur http://git-scm.com/
- Et enfin, Christophe publie sur http://www.git-attitude.fr/ des tuto techniques qui sont toujours intéressants à lire.
Voilà pour ce premier article d’introduction, avant d’entrer dans le vif du sujet
Vos commentaires
# Le 9 janvier 2013 à 16:31, par Ben En réponse à : Git c’est facile
Une refcards à imprimer : https://github.com/AlexZeitler/gitcheatsheet/blob/master/gitcheatsheet.pdf
# Le 24 juin 2016 à 13:39, par Ammi En réponse à : Git c’est facile
Excellent tutoriel. Il y a aussi les fonctionnalités avancées de Git sur http://www.alphorm.com/tutoriel/formation-en-ligne-git-fonctionnalites-avancees. C’est très facile à assimiler.
Vos commentaires
Suivre les commentaires : |