Comment vérifier si un commit Git est présent dans la branche actuelle

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 à déterminer si un commit Git spécifique existe dans la branche actuelle. Nous commencerons par explorer la commande git log et ses diverses options pour rechercher et filtrer efficacement l'historique des commits, notamment en utilisant --grep pour rechercher dans les messages de commit et --author pour filtrer par auteur.

Ensuite, vous apprendrez à utiliser la commande git branch --contains pour identifier quelles branches de votre dépôt incluent un commit donné. Cette activité pratique vous dotera des compétences nécessaires pour naviguer efficacement et comprendre l'historique des commits de votre projet sur différentes branches.


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/commit("Create Commit") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560060{{"Comment vérifier si un commit Git est présent dans la branche actuelle"}} git/commit -.-> lab-560060{{"Comment vérifier si un commit Git est présent dans la branche actuelle"}} git/branch -.-> lab-560060{{"Comment vérifier si un commit Git est présent dans la branche actuelle"}} git/checkout -.-> lab-560060{{"Comment vérifier si un commit Git est présent dans la branche actuelle"}} git/log -.-> lab-560060{{"Comment vérifier si un commit Git est présent dans la branche actuelle"}} end

Utiliser git log pour trouver un commit

Dans cette étape, nous apprendrons à utiliser la commande git log pour trouver des commits spécifiques dans l'historique de notre projet. Au fur et à mesure que votre projet grandit et que vous effectuez plus de commits, la sortie de la commande git log peut devenir assez longue. Git propose des options puissantes pour filtrer et rechercher dans le journal (log).

Tout d'abord, faisons quelques commits supplémentaires afin d'avoir un historique avec lequel travailler. Assurez-vous que vous êtes dans le répertoire ~/project/my-time-machine.

cd ~/project/my-time-machine
echo "Adding a second message" >> message.txt
git add message.txt
git commit -m "Add a second message"
echo "Adding a third message" >> message.txt
git add message.txt
git commit -m "Add a third message"

Maintenant, regardons à nouveau le journal complet :

git log

Vous verrez trois commits répertoriés, le plus récent en haut.

Parfois, vous pourriez chercher un commit dont le message contient un mot spécifique. Vous pouvez utiliser l'option --grep à cet effet. Recherchons le commit avec le message "second message" :

git log --grep "second message"

Cette commande n'affichera que le commit dont le message contient la phrase "second message".

Une autre option utile est --author pour trouver des commits d'un auteur spécifique. Étant donné que nous avons configuré le nom de notre auteur lors de la configuration, essayons de trouver les commits de "Jane Doe" :

git log --author "Jane Doe"

Cela affichera tous les commits effectués par "Jane Doe".

Enfin, vous pouvez limiter le nombre de commits affichés en utilisant l'option -n. Par exemple, pour voir seulement les deux derniers commits :

git log -n 2

L'utilisation de ces options avec git log vous permet de naviguer efficacement dans l'historique de votre projet, en particulier dans les projets plus importants avec de nombreux commits.

Exécuter git branch --contains pour un commit

Dans cette étape, nous allons explorer comment utiliser la commande git branch --contains. Cette commande est utile pour savoir quelles branches contiennent un commit spécifique. Cela est particulièrement utile lorsque vous avez plusieurs branches et que vous devez suivre où une certaine modification a été incluse.

Tout d'abord, récupérons le hachage (hash) d'un de nos commits précédents. Nous pouvons utiliser git log --oneline pour obtenir une vue condensée du journal (log) et copier facilement un hachage de commit. Assurez-vous que vous êtes dans le répertoire ~/project/my-time-machine.

cd ~/project/my-time-machine
git log --oneline

Vous verrez une sortie similaire à celle-ci (vos hachages de commit seront différents) :

abcdefg (HEAD -> master) Add a third message
hijklmn Add a second message
opqrstu Send a message to the future

Copiez le hachage du premier commit que vous avez effectué ("Send a message to the future"). Dans l'exemple ci-dessus, c'est opqrstu.

Maintenant, utilisons git branch --contains avec ce hachage de commit. Remplacez [commit_hash] par le véritable hachage que vous avez copié :

git branch --contains [commit_hash]

Par exemple, en utilisant le hachage de l'exemple de sortie :

git branch --contains opqrstu

La sortie devrait afficher * master. L'astérisque * indique la branche actuellement cochée (checked-out). Cela nous indique que le commit opqrstu est présent sur la branche master.

Pour le moment, nous n'avons qu'une seule branche (master), donc la sortie est simple. Dans l'étape suivante, nous allons créer une autre branche et voir comment la sortie de git branch --contains change.

Comprendre quelles branches contiennent un commit spécifique est essentiel pour gérer l'historique de votre projet et coordonner le travail sur différentes lignes de développement.

Tester avec d'autres branches

Dans cette étape, nous allons créer une nouvelle branche et effectuer un commit sur celle-ci pour voir comment git branch --contains se comporte lorsqu'un commit n'est présent que sur une seule branche. Cela vous aidera à consolider votre compréhension de la façon dont Git suit les commits sur différentes lignes de développement.

Tout d'abord, créons une nouvelle branche appelée feature-branch. Assurez-vous que vous êtes dans le répertoire ~/project/my-time-machine.

cd ~/project/my-time-machine
git branch feature-branch

Maintenant, changeons de branche pour notre nouvelle branche :

git checkout feature-branch

Vous devriez voir une sortie indiquant que vous avez basculé sur la nouvelle branche :

Switched to branch 'feature-branch'

Effectuons un nouveau commit sur cette branche feature-branch.

echo "Adding a feature" >> feature.txt
git add feature.txt
git commit -m "Add a new feature file"

Maintenant, récupérons le hachage (hash) de ce nouveau commit en utilisant git log --oneline :

git log --oneline

La sortie affichera votre nouveau commit en haut, suivi des commits précédents. Copiez le hachage du commit "Add a new feature file".

Maintenant, utilisons git branch --contains avec le hachage du commit "Add a new feature file". Remplacez [feature_commit_hash] par le véritable hachage que vous avez copié :

git branch --contains [feature_commit_hash]

La sortie devrait afficher seulement * feature-branch. En effet, ce commit spécifique a été effectué après avoir créé et basculé sur la branche feature-branch, il n'existe donc que dans l'historique de cette branche.

Maintenant, essayons git branch --contains avec le hachage du tout premier commit ("Send a message to the future") à nouveau. Remplacez [first_commit_hash] par le hachage que vous avez utilisé à l'étape précédente :

git branch --contains [first_commit_hash]

Cette fois, la sortie devrait afficher à la fois feature-branch et * master. En effet, la branche feature-branch a été créée à partir de la branche master, elle contient donc tous les commits qui étaient sur master à ce moment-là, y compris le premier commit.

Cela démontre comment git branch --contains peut vous aider à comprendre la relation entre les branches et les commits qu'elles incluent.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si un commit Git est présent dans la branche actuelle. Nous avons commencé par explorer la commande git log et ses diverses options telles que --grep, --author et -n pour rechercher et filtrer efficacement l'historique des commits. Cela est essentiel pour naviguer dans des projets comportant de nombreux commits.

Ensuite, nous avons appris à utiliser la commande git branch --contains pour identifier quelles branches incluent un commit spécifique. Cette commande est précieuse pour suivre la propagation des modifications à travers différentes branches dans un dépôt (repository) Git.