2011-10-14 26 views
11

Necesita ayuda para descifrar un par de flujos de trabajo comunes con Github. Vengo de un fondo VS TFS, así que discúlpeme.Git: deshacer cambios locales; git add. + git rm?

deshacer cambios pendientes

Digamos que he clonado de un repositorio git a mi sistema de archivos local. En este punto, los archivos locales del proyecto coinciden exactamente con lo que está en el repoistorio remoto.

Luego decidí hacer algunos cambios en el código y cambiar las versiones locales de un par de archivos. Después de hacer algunas pruebas, me doy cuenta de que quiero descartar mis cambios locales y revertir los archivos locales a lo que son en el repoistorio remoto.

¿Cómo deshago estos cambios locales, restaurándolos a las versiones actuales en el repositorio?

Cometer todos los cambios

Siempre que modificar el contenido de los archivos locales en mi clon del repositorio, o añadir nuevos archivos, y quiero empujar los cambios, expido "git add.", "Git commit" con mis comentarios, luego "git push" a mi maestro.

Sin embargo, cuando elimino un archivo localmente rastreado en el repositorio, "git add". no captura los cambios de rm En su lugar, tengo que "git rm [nombre del archivo]" antes de que "git commit" para actualizar el repositorio. Sin embargo, siempre me olvido de hacer esto.

¿Hay un comando git que "agregará git"? y "git rm" cualquier archivo que he eliminado localmente, en un solo paso? Después de modificar los archivos locales y eliminar un par, me gustaría emitir solo un comando que capture todos mis cambios antes de que "git commit".

Respuesta

22

¿Cómo puedo deshacer estos cambios locales, restaurarlos a las versiones actuales en el repositorio? `

git reset --hard 

(esto se restablecerá el índice y el directorio de trabajo a HEAD)

¿Hay un comando git que "agregará git"? y "git rm" cualquier archivo He eliminado localmente, en un solo paso? `

git add -u 

(no lo puedo añadir nuevos archivos)

Si también desea añadir nuevos archivos, eliminar rm' ed archivos y modificaciones de escenario en archivos:

git add -A 
+0

Creo que esta es la respuesta correcta. Consulte este enlace para obtener más información: http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html – dresende

3

Puede volver a su última válida comprometerse (es decir, copia de la cesión temporal a distancia, en el ejemplo del tour) mediante la emisión:

git reset --hard HEAD 

Además, sugiero la lectura de la utilidad página http://progit.org/2011/07/11/reset.html para comprender mejor cómo el trabajo de reposición y qué es el índice y por qué git add y git rm son comandos separados.