ver track the that pendientes modificados made log discarded commits are archivos and git commit

track - git ver archivos modificados



La lista se compromete entre 2 hashes de commit en git (4)

"Between" es una noción algo resbaladiza, cuando se trata de git commits.

El texto que muestra arriba, con un fragmento de salida de gráfico, muestra por qué from^..to produce más que solo esos dos commits: the to parte es un commit de fusión.

La notación A..B es solo una abreviatura de B ^A Es decir, "todo comenzando desde B y trabajando hacia atrás, menos todo comenzando desde A y trabajando hacia atrás". Pero B es un compromiso de fusión, por lo que "todo comienza allí y funciona al revés" usa ambos padres .

Aquí el primer elemento principal de 7b4a07a es a92b37f (no en el fragmento [original] anterior, pero cloné el repositorio vinculado y lo encontré). Sin embargo, podemos referirnos a esto simbólicamente, y lo haré a continuación. El segundo padre de 7b4a07a es ecf5891 , la parte "de" que le interesa.

Cuando pides:

ecf5891^..7b4a07a

eso significa:

7b4a07a ^ecf5891^

que es lo mismo que:

7b4a07a ^082236e

lo que hace que ambos padres se fusionen y luego recorta todo desde 082236e . Necesita recortar todo desde 7b4a07a^ -el primer padre-y viceversa también:

git rev-list 7b4a07a ^ecf5891^ ^7b4a07a^ git log --oneline 7b4a07a ^ecf5891^ ^7b4a07a^

Sin embargo, en general, debe averiguar qué línea descendente cortar.

Editar: puede seguir con la notación A..B , pero necesita agregar el "excluir" adicional. Entonces la respuesta de Jthill también funciona, una vez que mueves el sombrero al frente.

a92b37f a su edición ("si quiero pasar de a92b37f a 7b4a07a "): volvemos a la cuestión de que "entre" es una noción resbaladiza. ¿Qué compromisos son "entre"? Hay una línea directa desde a92b37f a 7b4a07a , porque a92b37f es uno de los dos padres de la combinación commit 7b4a07a . Entonces, según la lógica anterior ("se compromete directamente en una línea ancestral", tal vez "inclusiva"), eso sería solo uno, o tal vez ambos, de esos dos compromisos. Pero dices que quieres dos commits que no estén relacionados, en ningún sentido ancestral, con a92b37f . ¿Por qué quieres esos dos compromisos particulares? ¿Qué hace que 082236e sea ​​"interesante" y 082236e^ , su padre, "poco interesante"?

Sé que ha habido preguntas muy similares aquí, pero no resolvieron mi problema. Quizás hay algo que no entiendo bien.

Esta es una parte del historial de commit de fitnesse ( https://github.com/unclebob/fitnesse/ ):

* | | | | | | | | | | | | | | | fa86be8 Avoid possible issue when using CachingPage under heavy memory load. |/ / / / / / / / / / / / / / / * | | | | | | | | | | | | | | 7b4a07a Merge pull request #256 from barredijkstra/fitnesse_issue_250 |/ / / / / / / / / / / / / / / | * | | | | | | | | | | | | | | ecf5891 Fixed test checking for OS specific exception message. | * | | | | | | | | | | | | | | 082236e Added rendering of cause exceptions. Fix for unclebob/fitnesse#250 * | | | | | | | | | | | | | | | a92b37f Merge pull request #243 from amolenaar/fix/243-hash-table-rendering

Quiero la lista de confirmaciones entre 2 hashes de confirmación. En este caso particular, quiero las confirmaciones entre ecf5891 y 7b4a07a , y espero que el resultado sea:

ecf5891 7b4a07a

Hasta ahora he estado usando git rev-list commit_hash_from_here^..commit_hash_up_to_here y ha funcionado bien con el historial lineal. Sin embargo, en este caso, me comprometo mucho más.

Lo intenté y funciona de la manera esperada:

git log --since=''<date ecf5891>'' --until=''<date 7b4a07a>''

(He buscado manualmente esas 2 fechas).

Una posible solución es obtener las 2 fechas y simplemente hacer eso, pero creo que debería haber una mejor manera.

Edición: los padres 7b4a07a son ecf5891 y a92b37f . Hasta ahora, las soluciones funcionan bien si quiero pasar de ecf5891 a 7b4a07a , pero si quiero pasar de a92b37f a 7b4a07a quiero obtener:

7b4a07a ecf5891 082236e a92b37f

pero no consigo a92b37f


Agregue ^ 7b4a07a ~ para excluir también todo accesible desde el primer elemento primario de la fusión. Solo excluyes lo que se puede alcanzar de su segundo padre.


Creo que estás buscando --ancestry-path , en tu caso:

git rev-list --ancestry-path 7b4a07a..ecf5891


Primero identifique los 2 hashes de confirmación relevantes que necesita para obtener la lista de hash de confirmación entre ellos mediante el uso de

git log --oneline

Luego puedes elegir los dos hashes de commit relevantes y encontrar los hashes de commit entre ellos usando

git log <commit hash 1> <commit hash 2> --oneline | cut -d " " -f 1