git diff cambió los files en x commits de una twig

La tarea es generar files que hayan sido cambiados en las últimas 5 confirmaciones de la twig de origin/1.5.0 .

Sin el requisito de sucursal, se me ocurrió: git diff --name-only HEAD~5 . Con el requisito de sucursal probé git diff --name-only HEAD~5 --first-parent origin/1.5.0 pero el resultado es más largo. Agregar condición no debería producir más resultados, lo que significa que hay algo que no entiendo. ¿Dónde me he equivocado?

El command git diff siempre 1 compara dos commits-o-file-trees. Las opciones y los arguments seleccionan cuáles dos (y cómo se hace la diferencia, por ejemplo, – --name-only o – --name-status omite la parte de parche de la diferencia).

Si ejecuta git diff HEAD~5 , las dos cosas que seleccionó son:

  1. HEAD~5 : el compromiso de cinco pasos desde HEAD , el compromiso actual
  2. el tree de trabajo actual

Para comparar, si ejecuta git diff --cached HEAD~5 , select en su lugar HEAD~5 y el índice actual, y si ejecuta git diff HEAD~10 HEAD~5 , select en su lugar HEAD~10 y HEAD~5 .

Tenga en count que la ~ number syntax del ~ number proviene de gitrevisions . Un sufijo tilde seguido de un integer se puede aplicar a cualquier otro selector de commit, como una identificación hash sin formatting, el nombre HEAD , el nombre de una de sus twigs o tags, o el nombre de cualquiera de sus twigs de seguimiento remoto . Como origin/1.5.0 es el nombre de una twig de seguimiento remoto, puede usarlo para especificar la confirmación a la que apunta ese nombre, o agregar una tilde y un número para mover esos pasos de primer padre hacia atrás desde ese punto.

Por lo tanto:

 git diff --name-only origin/1.5.0~5 origin/1.5.0 

comparará los dos commits especificados, mostrando solo los nombres de los files que no son los mismos en esos dos commits.


1 Puede hacer que se comporte de manera diferente en algunos casos interesantes, pero no son los que nos interesan aquí.

Creo que con "origen / 1.5.0", el command cambió para comparar HEAD ~ 5 con el origen de la sucursal / 1.5.0. Esa es una diferencia mucho más diferente que sin twig.