Comment vérifier si une branche Git est obsolète

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 une branche Git est obsolète (stale) en examinant la date de son dernier commit. Vous commencerez par utiliser la commande de base git log pour afficher l'historique des commits et identifier la date du dernier commit sur une branche.

Ensuite, vous explorerez la commande plus puissante git for-each-ref pour récupérer efficacement la date du dernier commit pour plusieurs branches. Enfin, vous apprendrez à comparer l'activité de différentes branches pour déterminer lesquelles pourraient être considérées comme obsolètes (stale).


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/branch -.-> lab-560050{{"Comment vérifier si une branche Git est obsolète"}} git/log -.-> lab-560050{{"Comment vérifier si une branche Git est obsolète"}} end

Vérifier la date du dernier commit avec git log

Dans cette étape, nous allons utiliser la commande git log pour vérifier la date du dernier commit dans notre dépôt. C'est une compétence fondamentale pour comprendre l'historique de votre projet.

Tout d'abord, assurez-vous que vous êtes dans le répertoire my-time-machine. Si ce n'est pas le cas, utilisez la commande cd pour vous y rendre :

cd ~/project/my-time-machine

Maintenant, utilisons git log pour voir l'historique des commits. Nous allons ajouter une option pour rendre la sortie plus concise et afficher seulement une ligne par commit, ce qui est très utile lorsque vous avez de nombreux commits.

git log --oneline

Vous devriez voir une sortie similaire à celle-ci :

a1b2c3d (HEAD -> master) Send a message to the future

Cette sortie montre le hachage de commit abrégé (a1b2c3d), la branche sur laquelle il se trouve (HEAD -> master) et le message de commit.

Pour voir plus de détails, y compris la date et l'heure du commit, vous pouvez utiliser la commande git log sans aucune option :

git log

La sortie sera similaire à celle que vous avez vue dans le laboratoire précédent, affichant les détails complets du commit :

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

    Send a message to the future

La ligne Date indique quand le commit a été effectué. Cela est crucial pour suivre l'avancement de votre projet et comprendre la chronologie des modifications.

Comprendre git log est essentiel pour naviguer dans l'historique de votre projet. Il vous permet de voir quand les modifications ont été effectuées, qui les a faites et de quoi les modifications s'agissaient (en se basant sur le message de commit). Au fur et à mesure que votre projet grandit, ce journal devient un outil inestimable pour le débogage, la collaboration et la compréhension de l'évolution de votre code.

Utiliser git for-each-ref pour l'activité des branches

Dans cette étape, nous allons explorer une commande Git plus avancée, git for-each-ref, pour obtenir des informations détaillées sur nos branches, y compris la date du dernier commit sur chaque branche. Cette commande est très puissante pour l'écriture de scripts et la personnalisation de la sortie de Git.

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

La commande git for-each-ref vous permet d'itérer sur toutes les références (comme les branches et les tags) dans votre dépôt et d'afficher des informations à leur sujet selon un format spécifié.

Utilisons-la pour lister nos branches et la date de leur dernier commit. Nous allons spécifier le format pour afficher la date du committer et le nom de la branche.

git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(refname:short)'

Décortiquons cette commande :

  • git for-each-ref : La commande elle-même.
  • --sort=-committerdate : Cela trie la sortie par date du committer en ordre décroissant (les plus récents en premier). Le tiret - avant committerdate indique l'ordre décroissant.
  • refs/heads/ : Cela indique à Git de ne regarder que les références sous refs/heads/, qui sont nos branches locales.
  • --format='%(committerdate:short) %(refname:short)' : Cela spécifie le format de sortie.
    • %(committerdate:short) : Affiche la date du committer dans un format court (AAAA-MM-JJ).
    • %(refname:short) : Affiche le nom court de la référence (le nom de la branche).

Vous devriez voir une sortie similaire à celle-ci :

YYYY-MM-DD master

La date affichée est la date du dernier commit sur la branche master, qui est le commit que nous avons créé dans le laboratoire précédent.

Alors que git log est excellent pour afficher l'historique d'une seule branche ou de quelques commits, git for-each-ref est utile lorsque vous voulez obtenir des informations spécifiques sur plusieurs références de manière structurée. Cela est particulièrement utile dans les projets plus grands avec de nombreuses branches.

Comprendre comment utiliser git for-each-ref avec différentes options de format ouvre de nombreuses possibilités pour l'écriture de scripts et l'automatisation de tâches liées à votre dépôt Git.

Comparaison avec les branches actives

Dans cette étape, nous allons comparer les informations que nous avons obtenues avec git log et git for-each-ref et comprendre comment elles sont liées au concept de branches « actives ».

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

Nous avons vu que git log affiche par défaut l'historique de la branche actuelle, et git for-each-ref refs/heads/ affiche des informations sur toutes les branches locales. Dans notre dépôt simple actuel, nous n'avons qu'une seule branche, master, donc la date du dernier commit affichée par les deux commandes sera la même.

Réexécutons la commande git for-each-ref pour voir à nouveau la sortie :

git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(refname:short)'

Sortie :

YYYY-MM-DD master

Et la commande git log --oneline :

git log --oneline

Sortie :

a1b2c3d (HEAD -> master) Send a message to the future

Les deux commandes confirment que la dernière activité (le dernier commit) dans notre dépôt se trouve sur la branche master, et elles affichent la date de ce commit.

Dans un projet réel avec plusieurs branches, git for-each-ref refs/heads/ trié par date du committer est un moyen rapide de voir quelles branches ont eu des activités récentes. Les branches en haut de la liste sont celles sur lesquelles on a travaillé le plus récemment.

Comparer cette sortie avec la sortie de git log sur des branches spécifiques vous aide à comprendre l'activité globale dans le dépôt et l'historique spécifique de chaque branche.

Par exemple, si vous aviez une autre branche appelée feature-x, vous pourriez exécuter git log feature-x --oneline pour voir son historique spécifique et comparer la date de son dernier commit avec la date affichée par git for-each-ref.

Cette capacité à voir rapidement les activités récentes sur toutes les branches est très utile pour les gestionnaires de projet et les chefs d'équipe pour avoir une vue d'ensemble de l'avancement du développement.

Résumé

Dans ce laboratoire, nous avons appris à vérifier si une branche Git est obsolète en examinant son activité. Nous avons commencé par utiliser la commande fondamentale git log pour afficher l'historique des commits et identifier spécifiquement la date du dernier commit sur une branche. Cela a fourni une compréhension de base de l'activité récente.

Nous sommes ensuite passés à la commande plus puissante git for - each - ref, qui nous permet de récupérer des informations détaillées sur toutes les branches, y compris la date de leur dernier commit. Cette commande est particulièrement utile pour évaluer systématiquement l'activité sur plusieurs branches et identifier celles qui n'ont pas été mises à jour récemment.