Diferencia entre revisiones de «Git»
(→Deshaciendo cambios) |
(→Deshaciendo cambios) |
||
Línea 135: | Línea 135: | ||
== Deshaciendo cambios == | == Deshaciendo cambios == | ||
+ | Se puede deshacer un commit si se ha olvidad añadir algo en el último que hicimos. Estos se hace con | ||
+ | <pre> | ||
+ | git commit --amend | ||
+ | </pre> | ||
+ | |||
+ | === deshaciendo cambios del staging=== | ||
+ | Si se ha añadido un fichero a stagin de forma erronea se puede sacar de ahí: | ||
+ | <pre> | ||
+ | git reset HEAD <fichero> | ||
+ | </pre> | ||
+ | |||
+ | === revirtiendo cambios a un fichero modificado=== | ||
+ | Si quieres volver a poner un ficher como estaba antes de modificarlo, se pude usar: | ||
+ | <pre> | ||
+ | git checkout -- <fichero> | ||
+ | </pre> |
Revisión de 16:56 26 ene 2013
Contenido
Introducción
Trabajo básico con el sistema distribuido de gestión de versiones Git. Algunos apuntes básicos para no olvidar.
Lo más importante es no olvidar que Git no trabaja con diferencias, sinó con snapshots de repositorios.
Los ficheros tienen tres estados posibles:
- commited
- modified
- staged
Referencias
- Pagina web con el libro Pro Git aqui
Comandos básicos
Generar un nuevo repositorio
Para hacer que un directorio esté gestionado por git usamos el comando
git init
Con eso, hacemos que el directorio actual sea controlad por git. Después podemos añadir los ficheros que hay dentro de ese directorio a git para que sean gestionados
git add * git add <fichero> git add <directorio>
Si especificamos un directorio se añadie todo su contenido de forma recursiva Una vez añadido los ficheros hay que validarlos haciendo commit
git commit -m "Subida inicial"
Clonar un repositorio
Para clonar un repositorio ya existente:
git clone git://github.com/schacon/grit.git git clone file:///<path del original> git clone https://server/path.git
Guardando cambios
Hay cuatro estados en el ciclo de vida de un fichero dentro de un repositorio git.
- untracked (no está controlado por git)
- unmodified (no ha sido modificado con respecto a lo que hay en git)
- modified (se ha modificado)
- staged (pendiente de ser subido a git)
Ver el estado
Para ver el estado de los ficheros de un repositorio, desde el raiz podemos user al comando
git status
pasar a stagin
Cuando se modifica un fichero controlado por git de forma automática aparece como modificada, antes de ser subido a git hay que pasarlo a staging y se hace con el comando
git add <fichero>
Un fichero modificado pero que no esta en stagin no se hará efectivo con commit
Ver modificaciones
Si queremos ver no solo que ficheros han sido modificados sino también que es lo que se ha modificado, podemos usar:
git diff <fichero> git diff
Si solo queremos ver solo los ficheros que ya están en stagin y ver sus diferencias con lo que tenemos en en git podemos usar el parámetro
git diff <fichero> --staged
Hacer commit
Para aceptar los cambios que hemos hecho solo tenemos que ejecutar
git commit
Nos aparecerá el editor que hayamos especificado por defecto para añadir comentarios, y si no queremos que aparezca el editor podemos ponerlo directamente con el parámetro -m
git commit -m "comentario"
Si queremos saltarnos el paso de hacer stagin a los ficheros que hemos modificado, podemos hacerlo de forma automática durante el commmit, simplemente añadiendo el parámetro -a: hará el add de forma automática a todos los ficheros que estén en estado modified
Borrar ficheros
Si borramos un fichero sin más con rm nos aparecer en la zona de ficheros modificados sin hacer staging.Si lo hacemos con git aparecerá en el area de ficheros en staging
git rm <fichero>
Así que la proxima vez que hagamos commit ya no estará ese fichero en esa revisión y además no seguirá estando controlado por git (untracked) Si solo se quiere borrar el fichero de git pero conservarlo en el directorio de trabajo se puede usar la opción --cached
git rm --cached <fichero>
Se puede borrar directorios y especificar patrones, pero los caracteres especiales de los patrones hay que escaparlos:
git rm log/\*.log
Mover ficheros
Para mover un fichero:
git mv <fichero>
Que es equivalente a hacer:
mv <fichero> <fichero.new> git rm <fichero> git add <fichero.new>
Viendo el historial
Para ver los cambios realizados se usa el comando
git log
Por defecto muestra la información de los cambios. Tiene muchas opciones, las mas comunes son:
- -p muestra los cambios de cada commit
- -2 muestra los dos últimos cambios
- --stat muestra los últimos cambios de la revisión con los ficheros modificados y algunas estadisticas
También se puede dar formato a la salida de log:
git log --pretty=format:"%h %s" --graph
Limitando la salida de Log
A parte de poner -<n> (como el 2) que limita el numero de salidas de log, tambien se pueden usar: --since y --until
git log --since=2.weeks
Deshaciendo cambios
Se puede deshacer un commit si se ha olvidad añadir algo en el último que hicimos. Estos se hace con
git commit --amend
deshaciendo cambios del staging
Si se ha añadido un fichero a stagin de forma erronea se puede sacar de ahí:
git reset HEAD <fichero>
revirtiendo cambios a un fichero modificado
Si quieres volver a poner un ficher como estaba antes de modificarlo, se pude usar:
git checkout -- <fichero>