¿Cómo realizar el pago en Git por fecha?

Resuelto Amir Afghani asked hace 13 años • 14 respuestas

Estoy trabajando en una regresión en el código fuente. Me gustaría decirle a Git: "consulte la fuente según una fecha/hora parametrizada". es posible?

También he preparado cambios en mi visión actual que no quiero perder. Idealmente, me gustaría alternar entre la fuente actual y alguna versión que me interese según una fecha anterior.

Amir Afghani avatar Aug 09 '11 08:08 Amir Afghani
Aceptado

Para mantener los cambios actuales

Puedes mantener tu trabajo escondido, sin comprometerlo, con git stash. Lo usarías git stash poppara recuperarlo. O puede (como dijo carleeto ) git commitenviarlo a una rama separada.

Pagar por fecha usando rev-parse

Puede verificar una confirmación antes de una fecha específica rev-parsede esta manera:

git checkout 'master@{1979-02-26 18:30:00}'

Puede encontrar más detalles sobre las opciones disponibles en git-rev-parse.

Como se señaló en los comentarios, este método utiliza reflog para encontrar la confirmación en su historial. Por defecto, estas entradas caducan después de 90 días . Aunque la sintaxis para usar reflog es menos detallada, solo puedes retroceder 90 días.

Pagar por fecha usando rev-list

La otra opción, que no usa reflog, es usar rev-listpara obtener la confirmación en un momento particular con:

git checkout `git rev-list -n 1 --first-parent --before="2009-07-27 13:37" master`

Tenga en cuenta --first-parent si desea solo su historial y no las versiones obtenidas mediante una fusión. Eso es lo que normalmente quieres.

Andy avatar Aug 09 '2011 02:08 Andy

La solución de Andy no me funciona. Aquí encontré otra manera:

git checkout `git rev-list -n 1 --before="2009-07-27 13:37" master`

Git: pago por fecha

Rocky avatar Dec 15 '2011 03:12 Rocky

Parece que necesitas algo como esto: Git checkout basado en fecha

En otras palabras, usas rev-listpara encontrar la confirmación y luego usas checkout para obtenerla.

Si no quiere perder los cambios realizados, lo más fácil sería crear una nueva rama y enviarlos a esa rama. Siempre puedes alternar entre ramas.

Editar: el enlace no funciona, así que aquí está el comando:

git checkout `git rev-list -n 1 --before="2009-07-27 13:37" master`
Carl avatar Aug 09 '2011 01:08 Carl