Comment vérifier si un fichier a été ajouté dans un commit Git

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si un fichier a été ajouté dans un commit Git spécifique. Vous explorerez différentes commandes Git pour inspecter les détails d'un commit et identifier les fichiers nouvellement ajoutés.

Vous commencerez par utiliser git show --name-status pour afficher un résumé concis des modifications dans un commit, en particulier en recherchant le statut 'A' indiquant un fichier ajouté. Ensuite, vous apprendrez à utiliser git diff-tree avec les options appropriées pour obtenir un résultat similaire, ce qui est particulièrement utile pour les scripts et les scénarios avancés. Enfin, vous distinguerez les fichiers modifiés des fichiers ajoutés dans l'historique des commits.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560024{{"Comment vérifier si un fichier a été ajouté dans un commit Git"}} git/status -.-> lab-560024{{"Comment vérifier si un fichier a été ajouté dans un commit Git"}} git/commit -.-> lab-560024{{"Comment vérifier si un fichier a été ajouté dans un commit Git"}} git/diff -.-> lab-560024{{"Comment vérifier si un fichier a été ajouté dans un commit Git"}} git/log -.-> lab-560024{{"Comment vérifier si un fichier a été ajouté dans un commit Git"}} end

Exécuter git show --name-status

Dans cette étape, nous allons explorer comment afficher les détails d'un commit spécifique, y compris quels fichiers ont été modifiés et comment. Nous utiliserons la commande git show avec l'option --name-status.

Tout d'abord, assurez-vous que vous êtes dans le répertoire my-time-machine :

cd ~/project/my-time-machine

Maintenant, utilisons git show pour examiner le commit que nous avons effectué dans le laboratoire précédent. Nous pouvons utiliser l'alias HEAD pour faire référence au commit le plus récent :

git show --name-status HEAD

Vous devriez voir une sortie similaire à celle-ci :

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

A       message.txt

Décortiquons cette sortie :

  • La première partie montre les détails du commit, similaire à ce que vous avez vu avec git log.
  • La ligne A message.txt est la partie importante ici.
    • A signifie "Ajouté" (Added). Cela nous indique que le fichier message.txt a été ajouté dans ce commit.
    • message.txt est le nom du fichier qui a été affecté.

L'option --name-status est très utile car elle vous donne un résumé concis des modifications introduites par un commit, en montrant seulement les noms des fichiers et leur statut (Ajouté, Modifié, Supprimé, etc.). C'est plus rapide que de regarder le diff complet si vous voulez simplement savoir quels fichiers ont été impliqués.

Comprendre comment inspecter les commits est crucial pour naviguer dans l'historique de votre projet et comprendre comment il a évolué.

Utiliser git diff-tree pour les fichiers ajoutés

Dans cette étape, nous allons utiliser une autre commande, git diff-tree, pour voir les modifications introduites par un commit. Alors que git show est excellent pour voir les détails complets d'un commit et le diff, git diff-tree est utile pour les scripts et les scénarios plus avancés.

Assurez-vous que vous êtes toujours dans le répertoire ~/project/my-time-machine.

Nous allons utiliser git diff-tree avec les options -r (récursive) et --name-status, suivies du hash du commit. Vous pouvez obtenir le hash du commit à partir de la sortie de git log ou git show. Pour notre premier commit, nous pouvons également utiliser HEAD.

git diff-tree -r --name-status HEAD

Vous devriez voir une sortie similaire à celle-ci :

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 A       message.txt

Examinons la sortie :

  • a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 est le hash du commit.
  • A indique le statut de la modification du fichier (Ajouté).
  • message.txt est le nom du fichier.

Cette sortie est très similaire à la partie --name-status de git show. Pour un commit simple comme notre premier (qui n'a ajouté qu'un fichier), la sortie est presque identique. Cependant, git diff-tree est plus flexible et peut être utilisé pour comparer différents arbres (instantanés) dans votre dépôt, pas seulement les commits.

Pour l'instant, le principal point à retenir est que tant git show --name-status que git diff-tree -r --name-status peuvent vous montrer quels fichiers ont été modifiés et comment dans un commit donné. C'est une compétence fondamentale pour comprendre l'historique de votre projet.

Tester les fichiers modifiés par rapport aux fichiers ajoutés

Dans les étapes précédentes, nous avons vu comment git show --name-status et git diff-tree --name-status affichent un A pour un fichier ajouté. Maintenant, voyons comment ils se comportent lorsqu'un fichier est modifié.

Tout d'abord, assurez-vous que vous êtes dans le répertoire ~/project/my-time-machine.

Ajoutons une autre ligne à notre fichier message.txt :

echo "Hello again, Future Me" >> message.txt

L'opérateur >> ajoute le texte à la fin du fichier existant.

Maintenant, vérifions l'état de notre dépôt :

git status

Vous devriez voir une sortie indiquant que message.txt a été modifié :

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Git identifie correctement que le fichier a été modifié.

Maintenant, préparons cette modification pour le commit :

git add message.txt

Et vérifions l'état à nouveau :

git status

La sortie devrait maintenant montrer que la modification est prête pour le commit :

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   message.txt

Notez que même si nous avons ajouté du contenu, Git enregistre cela comme un fichier modifié car le fichier existait déjà dans le commit précédent.

Enfin, validons cette modification :

git commit -m "Add another message to the future"

Vous devriez voir une sortie confirmant le commit :

[master a1b2c3d] Add another message to the future
 1 file changed, 1 insertion(+)

Maintenant, nous avons un nouveau commit. Utilisons git show --name-status sur le dernier commit (HEAD) pour voir l'état :

git show --name-status HEAD

La sortie sera similaire à celle-ci :

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Add another message to the future

M       message.txt

Notez le M avant message.txt. Cela indique que le fichier a été Modifié dans ce commit.

De même, si vous utilisez git diff-tree -r --name-status HEAD, vous verrez également le statut M.

Cette distinction entre A (Ajouté) et M (Modifié) est importante pour comprendre l'historique de vos fichiers dans Git. A signifie que le fichier a été créé dans ce commit, tandis que M signifie que le fichier existait déjà et que son contenu a été modifié.

Résumé

Dans ce laboratoire, nous avons appris à vérifier si un fichier a été ajouté dans un commit Git. Nous avons d'abord exploré la commande git show --name-status, qui fournit un résumé concis des modifications dans un commit, y compris le statut (comme 'A' pour Ajouté) et le nom des fichiers affectés. C'est un moyen rapide de voir quels fichiers ont été impliqués dans un commit sans afficher le diff complet.

Nous avons ensuite présenté la commande git diff-tree avec les options -r et --name-status comme une méthode alternative pour examiner les modifications d'un commit, particulièrement utile pour les scripts et les scénarios avancés. Bien que les détails complets de cette étape n'aient pas été fournis, l'introduction indique que son but est d'explorer plus en profondeur comment identifier les fichiers ajoutés dans un commit en utilisant une autre commande Git.