Pregunta

¿Cómo puedo ir de un retroceso a una específica comprometo en git?

La mejor respuesta alguien podría dar yo era utilizar tiempos git revert X hasta que llegue al deseaba comprometerse.

Así que digamos que quiero volver a cometer ese es un 20 confirmaciones de edad, que tendría que ejecutarlo 20 veces.

¿Hay una manera más fácil de hacer esto?

No puedo utilizar reinicio debido a este repositorio es público.

¿Fue útil?

Solución

Prueba esto:

git checkout [revision] .

donde [revision] es el hash cometer (por ejemplo: 12345678901234567890123456789012345678ab).

No se olvide del . al final, muy importante. Esto se aplicará cambios a todo el árbol. Debe ejecutar este comando en la raíz del proyecto Git. Si se encuentra en cualquier subdirectorio, entonces este comando sólo cambia los archivos en el directorio actual. Luego de comprometerse y que debe estar bien.

Puede deshacer la acción

git reset --hard 

que va a eliminar todas las modificaciones de la zona de directorio y puesta en escena de trabajo.

Otros consejos

Para revertir a una específica comprometerse:

git reset --hard commit_sha

Para deshacer 10 comete vuelta:

git reset --hard HEAD~10

Puede utilizar "Revert git" como en el siguiente post si no desea volver a escribir la historia

cómo revertir repositorio Git a una confirmación anterior

Bueno, supongo que la pregunta es, ¿qué es lo que quiere decir con 'retroceder'? Si no puede reset porque es público y que desea mantener intacta la historia cometen, ¿quiere decir lo que desea su copia de trabajo para reflejar un determinado cometido? Utilice git checkout y el hash comprometerse.

Edit: Como se ha señalado en los comentarios, usando git checkout sin especificar una rama le dejará en un estado "ninguna de las ramas". Utilice git checkout <commit> -b <branchname> a la comprobación en una rama, o git checkout <commit> . a la comprobación en la rama actual.

El cartel original establece:

  

La mejor respuesta que alguien me podía dar era utilizar tiempos git revert X hasta que   llegar a la deseada commit.

     

Así que digamos que quiero volver a cometer ese es un 20 confirmaciones de edad, tendría   para ejecutarlo 20 veces.

     

¿Hay una manera más fácil de hacer esto?

     

No puedo usar restablecer causar este repo es público.

No es necesario el uso de tiempos git revert X. git revert puede aceptar una comprometerse gama como un argumento, por lo que sólo hay que usarla una vez para revertir una gama de confirmaciones Por ejemplo, si desea revertir los últimos 20 compromete:.

git revert --no-edit HEAD~20..

El HEAD~20.. cometer gama es la abreviatura de HEAD~20..HEAD, y significa "empezar desde el 20 º padre de la CABEZA cometer, y volver todos los envíos después de que hasta CABEZA".

Eso hará que revertirá últimos 20 confirmaciones, suponiendo que ninguno de los que son de combinación comete. Si hay fusión se compromete, entonces no puede revertir a todos en un solo comando, tendrá que volver de forma individual con

git revert -m 1 <merge-commit>

Nota también que he probado usando un intervalo con git revert usando git versión 1.9.0. Si está utilizando una versión anterior de git, utilizando una gama con git revert puede o no puede trabajar .

En este caso, git revert se prefiere sobre git checkout.

Tenga en cuenta que a diferencia de esta respuesta que dice que el uso git checkout , git revert en realidad eliminar todos los archivos que se han añadido en cualquiera de las confirmaciones que eres revirtiendo , que hace que esta la forma correcta de revertir un rango de revisiones.

Documentación

Paso 1: lista de confirmaciones tomará:

git log

Usted obtendrá una lista como en este ejemplo:

[Comp:Folder User$ git log
commit 54b11d42e12dc6e9f070a8b5095a4492216d5320
Author: author <author@gmail.com>
Date:   Fri Jul 8 23:42:22 2016 +0300

This is last commit message

commit fd6cb176297acca4dbc69d15d6b7f78a2463482f
Author: author <author@gmail.com>
Date:   Fri Jun 24 20:20:24 2016 +0300

This is previous commit message

commit ab0de062136da650ffc27cfb57febac8efb84b8d
Author: author <author@gmail.com>
Date:   Thu Jun 23 00:41:55 2016 +0300

This is previous previous commit message
...

Paso 2: Copiar necesario cometer hash y pegarlo para el préstamo:

git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f

Eso es todo.

git read-tree -um @ $commit_to_revert_to

lo hará. Se trata de "git checkout", pero sin actualizar HEAD.

Puede conseguir el mismo efecto con

git checkout $commit_to_revert_to
git reset --soft @{1}

si prefiere la comodidad encadenar comandos a la vez.

Estos te dejan con su worktree e índice en el estado deseado, sólo puede git commit para terminar.

No estoy seguro de lo que ha cambiado, pero no soy capaz de cometer un pago y envío específica sin la opción --detach. El comando completo que trabajó para mí era: git checkout --detach [commit hash]

Para volver desde el estado separado que tenía que pago my rama local: git checkout master

Digamos que usted trabaja en un proyecto y después de un día más o menos. Se nota una característica que todavía se produce errores. Pero usted no sabe lo cambio que hizo que provocó el error. Así que hay que pescar confirmaciones de trabajo anteriores. Para volver a una específica comprometerse:

git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 .

Ok, por lo que se comprometen funciona para usted. No más errores. Usted identificado el problema. Ahora se puede volver a comprometerse más reciente:

git checkout 792d9294f652d753514dc2033a04d742decb82a5 .

, y obtenga un archivo específico antes de que la causa del error (en mi caso uso Gemfile.lock ejemplo):

git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 -- /projects/myproject/Gemfile.lock

Y esta es una manera de controlar los errores que ha creado en compromete sin darse cuenta de los errores hasta más tarde.

¿Quieres modo desconectado CABEZA?

Si desea deshacer X tiempo a una cierta comprometerse con una cabeza separada (es decir, no se puede estropear cualquier cosa), entonces por todos los medios, utilice la siguiente:

(reemplace X con cuántas confirmaciones desea volver)

git checkout HEAD~X

I.E. para retroceder un commit:

git checkout HEAD~1

Este es un ejemplo de hacerlo

    cd /yourprojects/project-acme 


    git checkout efc11170c78 .

Puede encontrar el ID de comprometerse en relación con cada confirmación en la sección confirmaciones de GitHub / BitBucket / Gitlab. Es muy simple, supongamos que su cometen id es 5889575 a continuación, si desea volver a esta parte de su código a continuación, sólo tiene que escribir

git checkout 5889575 .

Esto le llevará a ese punto del tiempo en el código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top