Utiliser git log --ancestry-path
Dans cette étape, nous allons explorer comment utiliser la commande git log --ancestry-path
. Cette commande est utile pour visualiser l'historique des commits le long d'un chemin spécifique entre deux commits. Elle vous aide à comprendre la lignée des modifications.
Tout d'abord, créons un simple dépôt Git (repository) et effectuons quelques commits pour configurer un scénario d'utilisation de --ancestry-path
.
Accédez au répertoire de votre projet :
cd ~/project
Créez un nouveau répertoire pour ce laboratoire (lab) et initialisez un dépôt Git :
mkdir ancestry-lab
cd ancestry-lab
git init
Vous devriez voir un message indiquant qu'un dépôt Git vide a été initialisé :
Initialized empty Git repository in /home/labex/project/ancestry-lab/.git/
Maintenant, créons un fichier et effectuons le premier commit :
echo "Initial content" > file1.txt
git add file1.txt
git commit -m "Initial commit"
Vous verrez un message confirmant le commit :
[master (root-commit) <commit-hash>] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 file1.txt
Ensuite, effectuons un autre commit :
echo "Adding more content" >> file1.txt
git add file1.txt
git commit -m "Add more content"
Vous verrez un message pour le deuxième commit :
[master <commit-hash>] Add more content
1 file changed, 1 insertion(+)
Maintenant, créons une nouvelle branche (branch) et effectuons un commit sur cette branche :
git branch feature
git checkout feature
echo "Feature work" > file2.txt
git add file2.txt
git commit -m "Add feature file"
Vous verrez un message pour la création de la branche, le passage à celle-ci et le nouveau commit :
Switched to a new branch 'feature'
[feature <commit-hash>] Add feature file
1 file changed, 1 insertion(+)
create mode 100644 file2.txt
Revenons à la branche master et effectuons un autre commit :
git checkout master
echo "More master work" >> file1.txt
git add file1.txt
git commit -m "More master content"
Vous verrez un message pour le changement de branche et le nouveau commit :
Switched to branch 'master'
[master <commit-hash>] More master content
1 file changed, 1 insertion(+)
Maintenant, nous avons un historique de commits avec une branche. Utilisons git log
pour voir l'historique complet :
git log --all --decorate --oneline
Vous verrez un historique similaire à celui-ci (les hachages de commit et l'ordre peuvent varier) :
<commit-hash> (HEAD -> master) More master content
<commit-hash> Add more content
<commit-hash> (feature) Add feature file
<commit-hash> Initial commit
Maintenant, utilisons git log --ancestry-path
. Cette commande nécessite deux références de commit. Elle affichera les commits qui sont les ancêtres du deuxième commit et les descendants du premier commit.
Trouvons le hachage du commit pour "Initial commit" et "More master content". Vous pouvez obtenir ces hachages à partir de la sortie de git log --all --decorate --oneline
. Remplacez <initial-commit-hash>
et <master-commit-hash>
par les hachages réels de votre sortie.
git log --ancestry-path <initial-commit-hash> <master-commit-hash> --oneline
Cette commande affichera les commits sur le chemin du commit initial au dernier commit sur la branche master. Vous devriez voir les commits "Initial commit", "Add more content" et "More master content".
L'option --ancestry-path
est utile pour comprendre la ligne directe de développement entre deux points de votre historique, en ignorant les commits d'autres branches qui pourraient avoir été fusionnés plus tard.