Usar git log --ancestry-path
En este paso, exploraremos cómo usar el comando git log --ancestry-path
. Este comando es útil para ver el historial de commits a lo largo de una ruta específica entre dos commits. Te ayuda a entender la línea de cambios.
Primero, creemos un repositorio de Git simple y hagamos algunos commits para configurar un escenario para usar --ancestry-path
.
Navega a tu directorio de proyecto:
cd ~/project
Crea un nuevo directorio para este laboratorio e inicializa un repositorio de Git:
mkdir ancestry-lab
cd ancestry-lab
git init
Deberías ver una salida que indique que se ha inicializado un repositorio de Git vacío:
Initialized empty Git repository in /home/labex/project/ancestry-lab/.git/
Ahora, creemos un archivo y hagamos el primer commit:
echo "Initial content" > file1.txt
git add file1.txt
git commit -m "Initial commit"
Verás una salida que confirme el commit:
[master (root-commit) <commit-hash>] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 file1.txt
A continuación, hagamos otro commit:
echo "Adding more content" >> file1.txt
git add file1.txt
git commit -m "Add more content"
Verás una salida para el segundo commit:
[master <commit-hash>] Add more content
1 file changed, 1 insertion(+)
Ahora, creemos una nueva rama y hagamos un commit en esa rama:
git branch feature
git checkout feature
echo "Feature work" > file2.txt
git add file2.txt
git commit -m "Add feature file"
Verás una salida para la creación de la rama, el cambio a ella y el nuevo commit:
Switched to a new branch 'feature'
[feature <commit-hash>] Add feature file
1 file changed, 1 insertion(+)
create mode 100644 file2.txt
Volvamos a la rama master y hagamos otro commit:
git checkout master
echo "More master work" >> file1.txt
git add file1.txt
git commit -m "More master content"
Verás una salida para el cambio de ramas y el nuevo commit:
Switched to branch 'master'
[master <commit-hash>] More master content
1 file changed, 1 insertion(+)
Ahora tenemos un historial de commits con una rama. Usemos git log
para ver el historial completo:
git log --all --decorate --oneline
Verás un registro similar a este (los hashes de commit y el orden pueden variar):
<commit-hash> (HEAD -> master) More master content
<commit-hash> Add more content
<commit-hash> (feature) Add feature file
<commit-hash> Initial commit
Ahora, usemos git log --ancestry-path
. Este comando requiere dos referencias de commit. Mostrará los commits que son ancestros del segundo commit y descendientes del primer commit.
Encontremos el hash de commit para "Initial commit" y "More master content". Puedes obtener estos del resultado de git log --all --decorate --oneline
. Reemplaza <initial-commit-hash>
y <master-commit-hash>
con los hashes reales de tu salida.
git log --ancestry-path <initial-commit-hash> <master-commit-hash> --oneline
Este comando mostrará los commits en la ruta desde el commit inicial hasta el último commit en la rama master. Deberías ver los commits "Initial commit", "Add more content" y "More master content".
La opción --ancestry-path
es útil para entender la línea directa de desarrollo entre dos puntos de tu historial, ignorando los commits de otras ramas que podrían haberse fusionado más tarde.