2010-09-24 12 views
17

Estoy intentando clonar un repositorio git a partir de una fecha determinada. Incluso si esto no es posible. ¿Es posible clonar el repositorio de git y luego retrotraerlo a una fecha determinada?Cómo en Git, clono un repositorio remoto (GitHub) a partir de una fecha especificada

Ejemplo: mi repositorio se ha actualizado desde mayo de 2010, pero me gustaría obtener la versión a partir del 5 de junio. Me gustaría ejecutar el siguiente comando:

git clone [email protected]:projectfolder -date 06-05-2010 

Respuesta

21

Clonación del repositorio le dará toda la historia de comprometer todo el código fuente.

Solo necesita desplazarse hacia atrás a través de git log y encontrar la confirmación deseada en su fecha objetivo. Ejecutando git checkout SHA donde SHA es el hash de confirmación le dará el estado del código fuente en esa fecha.

edición:

git log --since=2010-06-05 --until=2010-06-06 ayudará a reducirla!

3

puede utilizar el comando de reversión de git para revertir cada confirmación posterior a la fecha que está buscando, o simplemente puede crear aa nueva rama en el comprometerse usted está interesado en

+1

+1 para la ramificación –

+3

La reversión abandonará cualquier historial nuevo que nunca es una buena opción. Bifurcación fuera del compromiso inmensamente preferido para revertir. –

+0

Esto es destructivo y hay formas mucho mejores de hacerlo. – Daenyth

4

Tal vez algo como esto:.

git log --since=2010-06-05 --until=2010-06-05

encontrar uno de los identificadores de que como allí luego hacer un git checkout <checkout id>

+3

Maldición. ¡Estaba editando mi respuesta para agregar ese comando exacto cuando respondiste! –

+5

jeje, le sucede a los mejores de nosotros :) –

1

Considere realizan los siguientes: cometer

5 May (A) -- 7 May -- master (current) 
5 May (B) -- 7 May/

No hay manera de que git pueda determinar si desea confirmar A o B. Por lo tanto, debe usar git log o gitk para obtener el SHA1 de la confirmación a partir de esa fecha y luego git checkout.

4
git clone [email protected]:projectfolder 
git reset --hard $(git rev-list -1 $(git rev-parse --until=2010-06-06) master) 
Cuestiones relacionadas