FAQ Git : retrouvez les meilleures réponses à vos questions pour apprendre Git, de niveau débutant à expert
FAQ Git : retrouvez les meilleures réponses à vos questions pour apprendre Git, de niveau débutant à expertConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 110, dernière mise à jour : 19 juin 2021
- Qu’est-ce que le répertoire de travail (working directory) ?
- Comment changer l’état du répertoire de travail (working directory) ?
- Comment connaître l’état du répertoire de travail (working directory) selon Git ?
- Comment annuler les modifications effectuées sur un fichier du répertoire de travail ?
- Que veut dire « detached HEAD » state après avoir effectué un git checkout ?
- Quel est l’intérêt de faire un checkout sur un tag ?
Littéralement, il s’agit du répertoire de travail de votre dépôt. C’est
le répertoire qui contient tous les fichiers susceptibles d’être dans le dépôt.
Il contient le dossier .git permettant à Git de sauvegarder les métadonnées.
Il expose l’état actuel d’une branche, d’un commit ou d’un tag du projet.
C’est depuis le répertoire de travail (working directory) que l’on effectue les modifications souhaitées sur nos fichiers.
La commande git checkout peut prendre en paramètre un hash de commit, un nom de branche ou un nom de tag. L’exécution de cette commande change le répertoire de travail (working directory) pour exposer l’état du commit, de la branche ou du tag.
git checkout 3ffb92fe20b6785d801023783d2f18c4de6e1593
La commande ci-dessus a pour effet de changer l’état du répertoire de travail (working directory) en l’état correspondant au commit désigné. Concrètement, Git modifie les fichiers traqués pour les mettre dans l’état correspondant au commit désigné.
Idem avec un nom de branche :
git checkout master
Ou avec un tag :
git checkout 1
.0
.0
2.
3.
$
git status
On branch master
nothing to commit, working directory clean
Cette commande indique qu’on a fait un checkout de la branche master et que rien n’est modifié.
En cas de doute, exécutez toujours un git status pour savoir dans quel état se situe Git
et surtout, pour savoir si vous avez des fichiers en attente d’être commités, à ajouter à votre commit ou
non versionnés.
Si nous avons modifié le fichier nom-fichier.txt :
git checkout -- nom-fichier.txt
Cette commande a pour effet de supprimer toutes les modifications effectuées dans le fichier.
Vous obtenez ce genre de message après un checkout sur un commit ou sur un tag :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$
git checkout 0
.4
.14
Note: checking out '0.4.14'
.
You are in
'detached HEAD'
state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in
this
state without impacting any branches by performing another checkout.
If
you want to create a new branch to retain commits you create, you may
do
so (
now or later) by using -b with the checkout command again. Example:
git checkout -b <
new-branch-name>
HEAD est maintenant sur 2ef6cee... Version bump
La variable HEAD est un alias du commit de tête de la branche courante. Lorsque vous ajoutez des commits à la branche, la variable HEAD est mise à jour.
En mode détaché ce ne sera plus le cas.
Pour ajouter des commits au dépôt, il est donc nécessaire de se trouver sur une branche ; c’est le concept qui représente une ligne de développement.
Une raison courante de vouloir exécuter un checkout sur un tag est de vouloir créer un hotfix. Dans ce cas, on va faire un checkout du tag, puis immédiatement créer une nouvelle branche :
2.
git checkout 0
.4
.14
git checkout -b hotfix/0
.4
.15
Le développement du hotfix peut alors démarrer sur la branche hotfix/0.4.15
tout en repartant de l’endroit où la branche 0.4.14 était restée.