Digamos que tengo el siguiente historialgit historial de registro de simplificación
D---E-------F
/ \ \
B---C---G---H---I---J
/ \
A-------K---------------L--M
git log---ancestry ruta D..M me dará
E-------F
\ \
G---H---I---J
\
L--M
Sin embargo, me gustaría simplemente el siguiente
E
\
G---H---I---J
\
L--M
O
E-------F
\
I---J
\
L--M
Esencialmente, me gustaría recorrer solo una ruta, no dos.
¿Esto es posible? Y si es así, ¿cuál es el comando?
Editar:
He intentado usar --first-padres, pero esto no es exactamente la misma. git log G..M --first-padre me da
F
\
H---I---J
\
L--M
Incluye H, F, porque es el primer padre de I. En su lugar me gustaría
H---I---J
\
L--M
Cualquier ayuda sería apreciado
solución (que trabajó para mí):
Como se ha indicado @VonC, no hay una sola de una sola línea que hace esto. Así que terminé usando un script bash.
- Para cada confirmación en 'git log---ancestry ruta G..M'
- determinar si $ comprometerse con los padres incluye el envío de datos que se encontraban antes en
- caso afirmativo, continuar. haz algo interesante
- Si no, omita ese compromiso.
Por ejemplo, git log-commit --first G..M es
H - F - I - J - L - M
Sin embargo, el padre del F es E, H. Así no omitimos F, dándome
H - I - J - L - M
¡Yay!
no creo que le va a gustar la respuesta, pero hay un punto fundamental que debe ser entendido: un registro lineal no funciona muy bien con git porque no es lineal desarrollo. Esto es desafortunado para las personas que desean conocer todos los cambios que entraron en una rama, como por ejemplo cuando intenta producir un archivo ChangeLog. Producir archivos ChangeLog de git con mucha fusión realmente no funciona del todo, porque un archivo ChangeLog es un historial lineal, y el desarrollo no. –
@Wes: sí, Git es un administrador de * content *, y si el contenido (de commits accesibles entre dos commits) es el resultado de una fusión, me sorprendería que un log, retrocediendo el DAG, pudiera ignorar parte si la historia que contribuyó a dicho contenido. – VonC
Estoy totalmente de acuerdo en que ambos, pero supongo que no tener una sola línea para esto no es algo de lo que sorprenderse. Voy a aceptar la respuesta de VonC porque responde mi pregunta, pero edité la pregunta para incluir la solución que se me ocurrió. Por favor, eche un vistazo –