2012-10-01 77 views
10

he descargado un repositorio con¿Qué es el comando "reiniciar" para un repositorio clonado de git?

git clone <address> 

he hecho algunas modificaciones y han editado algunos archivos, ahora quiero descartar todo y sólo asegúrese de que lo que tengo en el disco es otra cosa que la distancia original versión de la base de código: ¿cuál es el comando correcto?

Respuesta

11

Asumiendo el mando a distancia se llama origen

git reset --hard HEAD 
git checkout origin/master 
git branch -D master 
git checkout -b master 

Lo que esto hace es:

  1. (Opcional si git status dice no hay archivos modificados) Descartar cualquier archivos modificados en el disco (por eso reset --hard)

  2. Comprobación de la rama maestra remota (nota: estará en un estado de "cabeza separada")

  3. Eliminar la master rama local (tirar todos los cambios locales)

  4. llamada la cabeza actual como la nueva rama master

Ahora es probable que desee hacer algo un poco diferente ... es decir, no deseche sus cambios, simplemente colóquelos en otra rama con nombre ...después de todo, nunca se sabe cuándo necesitará de nuevo

git checkout -b my-silly-changes 
git branch -D master 
git checkout -b master origin/master 

que guarda los cambios actuales en una nueva rama local llamado my-silly-changes y luego elimina la antigua rama local llamado master y finalmente recrea desde la cabeza a distancia.

+6

También debe hacer un 'git clean -xfd' para deshacerse de todos los archivos no rastreados (compilar productos, etc.) –

+0

cool no sabía de eso –

+2

Los primeros cuatro comandos, aunque son correctos, son innecesariamente detallados. Si está en 'master', solo 'git reset --hard origin/master' hará lo mismo que los cuatro comandos. Aún así, +1 por mencionar la opción de crear una sucursal local. – sleske

0

Si no ha cometido nada, entonces git reset --hard es suficiente.

Here es un buen recurso que explica cómo funciona el restablecimiento de git con sus diferentes modos (--hard, --mixed y --soft).

Negación:

git reset --hard es una operación insegura. Elimina los cambios no realizados del árbol de trabajo y no se puede deshacer.

+0

* "Quiero descartar todo y simplemente estar seguro de que lo que tengo en el disco no es más que la versión remota original del código base" * - El método anterior parece deje archivos en el sistema de archivos que no formaron parte del clon, como los guiones 'configure' que se generaron a partir de' configure.ac' con 'autoreconf'. Deje que Git tome una tarea simple y dificulte lo imposible. – jww

1

Si está seguro de que desea descartar todos los archivos y pierden todas sus modificaciones, puede hacerlo (!):

git reset --hard origin/master 

Esto restablecerá el estado de su copia local del "maestro "rama y de su copia de trabajo a la última versión que ha extraído de su flujo ascendente (control remoto original).

Nota: Esto supone que

  • su repositorio aguas arriba se llama "origen" (el valor predeterminado para git clone)
  • está trabajando en un clon de la distancia master rama

Si está trabajando en una rama que no sea "maestra", ajuste el comando:

git reset --hard origin/branch1 
-1

También puede ser necesario hacer algo similar a:

git branch --set-upstream-to=origin/master master

Dónde:

origin/master

es la rama remota que desea señalar, y

master

es la sucursal local de la que desea trabajar,

Cuestiones relacionadas