Diferencia entre revisiones de «GitHub (Comandos)»

De FdIwiki ELP
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
GitHub es el host de repositorios Git por excelencia, es el punto central de la colaboración de millones de desarrolladores y proyectos.  
 
GitHub es el host de repositorios Git por excelencia, es el punto central de la colaboración de millones de desarrolladores y proyectos.  
Para saber más puedes visitar link1 y link2 en este último tienes además un manual detallado disponible.
+
 
Para más información sobre los comandos y sus opciones puedes introducir en la terminal man git-COMMAND en la terminal o git help COMMAND en el Git Bash para Windows.
+
Para saber más puedes visitar [[Guía rápida de Github]] y [[Trabajo:Estudio sobre GitHub|Estudio sobre GitHub]], en este último tienes además un manual detallado disponible.
 +
Para más información sobre los comandos y sus opciones puedes introducir <code>man git-<COMMAND></code> en la terminal o <code>git help <COMMAND></code> en Git Bash para Windows.
  
  
Línea 8: Línea 9:
 
===init===
 
===init===
 
Inicializa un directorio con o sin contenido como un nuevo repositorio Git.  
 
Inicializa un directorio con o sin contenido como un nuevo repositorio Git.  
  git init  
+
  '''git init'''
  
 
===clone===
 
===clone===
 
Hace una copia local un repositorio para que puedas tener acceso a él, tanto visualizarlo como modificarlo.  
 
Hace una copia local un repositorio para que puedas tener acceso a él, tanto visualizarlo como modificarlo.  
  git clone [url]
+
  '''git clone [<url>]'''
  
  
Línea 21: Línea 22:
 
# Añades instantáneas de lo archivos a tu área de preparación.
 
# Añades instantáneas de lo archivos a tu área de preparación.
 
# Haces commit, que toma los archivos como están en el área de preparación y guarda esa instantánea permanentemente en tu directorio Git.
 
# Haces commit, que toma los archivos como están en el área de preparación y guarda esa instantánea permanentemente en tu directorio Git.
 +
 
Una versión particular de un archivo puede estar commited (está en el repositorio), staged (está en el staging area pero no se le ha hecho commit) o modificada (tiene cambios pero no ha sido añadido al staging area).
 
Una versión particular de un archivo puede estar commited (está en el repositorio), staged (está en el staging area pero no se le ha hecho commit) o modificada (tiene cambios pero no ha sido añadido al staging area).
  
 +
===add===
 +
Añade ficheros al staging area. Añades un archivo cuando quieres incluir los cambios que has hecho a tu próximo commit. Aquello que hayas modificado pero no añadido, no será incluido en el commit.
 +
'''git add <ficheros>'''  añade la lista de ficheros separados por un espacio.
 +
'''git add .'''  añade recursivamente todos los archivos desde el directorio actual.
 +
'''git add *'''  añade todos los archivos en el directorio actual, no recursivo.
  
 +
===status ===
 +
Ver el estado de tus archivos en el directorio de trabajo y en el staging area.
 +
'''git status'''
 +
'''git status -s'''  te dará cada entrada de manera más reducida
  
= Comandos de Propósito general =
+
===diff ===
 +
Muestra la diferencia entre lo que está añadido (staged) y aquello que ha sido modificado pero no añadido. Muestra la diferencia línea por línea.
 +
'''git diff'''  muestra el diff de los cambios no añadidos (unstaged) y el último commit
 +
'''git diff --cached'''  muestra el diff de cambios añadidos y el último commit
 +
'''git diff HEAD'''  muestra el diff de todos los cambios de archivos, tanto añadidos o no, con el último commit
 +
'''git diff --stat'''  con esta opción se muestra un resumen de los cambios en lugar de la versión completa
  
===clonar===
+
===commit  ===
 +
Guarda una instantánea del staging area.
 +
'''git commit -a '<message>' '''  la opción -m permite agregar un mensaje que describa al commit. Su
 +
uso es canónico.
 +
'''git commit -a'''  hace commit de los archivos en los que ya se hizo un commit sin tener que pasar por
 +
la etapa de staging
 +
'''git commit -a '<message> #<num_issue>' '''  mensaje que hace referencia a un issue
  
''git clone git@github.com:GReaper/playground <folder_name>'' entrar con cd a la carpeta
+
===reset===
 
+
Deshace cambios y commits. Resetea el HEAD (último commit de la rama actual) al estado especificado.
===add===  
+
'''git reset [<commit>] [--] <files>'''  Copia el estado de las entradas de commit en el staging area. Si
 
+
no especificamos el commit, se toma por defecto HEAD (el último commit).
''git add <ficheros>''
+
'''git reset HEAD [--] <files>'''  Copia el estado de las entradas de HEAD en el staging area, es lo contrario
 
+
de hacer  git add files, (hace un "unstage"). Los archivos en tu copia local no se ven afectados.
''git add -u <ficheros>'', los que ya se añadieron alguna vez se añaden
+
'''git reset --soft <commit> '''  resetea el HEAD al commit especificado, no afecta al staging area.
 
+
'''git reset --hard <commit> '''  resetea el HEAD al commit especificado y revierte todos los cambios en
''git add -i <ficheros>'', añadir de forma interactiva
+
el directorio a ese commit.
  
 
===rm===
 
===rm===
 +
Elimina archivos del staging area
 +
'''git rm <files>'''  elimina el archivo del staging area por completo junto al de tu directorio.
 +
'''git rm --cached <files>'''  elimina el archivo del staging area y deja el archivo de tu directorio sin verse afectado.
  
''git rm <ficheros>''  
+
===mv===
 +
Renombra archivos en tu repositorio. No es necesario, pues Git puede darse cuenta por comparaciones de qué archivos han sido renombrados. Sin embargo el comando existe y lo que hace es un <code>git rm --cached</code>, renombra en disco y luego usa <code>git add</code> con el nuevo archivo.
 +
'''git rv <name> <new_name> '''  
  
''git rm --cached <ficheros>'', quitar un fichero del repositorio conservando la versión existente en el directorio de trabajo,
+
===stash===
 +
Guarda cambios hechos en el staging area actual y en el directorio de trabajo para luego. Guarda los cambios que no están listos para hacerles commit y que así puedas volver a ellos mientras trabajas en otra cosa. Este comando funciona con una pila de cambios.
 +
'''git stash'''  guarda los cambios actuales en la pila.
 +
'''git stash list'''  ver lo que hay en la pila.
 +
'''git stash apply'''  aplica en el directorio actual los cambios guardados en la cima de la pila.
 +
'''git stash drop'''  borra la cima de la pila.
  
===status===
 
  
''git status''
 
  
''git status –s'', versión reducida
 
  
'''*Nota:''' indica el estado actual del repositorio, muy importante
+
= Comandos de Propósito general =
 
+
===commit===
+
 
+
''git commit''
+
 
+
''git commit -m "mensaje"'', permite escribir un mensaje para el commit
+
 
+
''git commit -m "mensaje #<num_issue>"'', mensaje que hace referencia a un issue
+
 
+
''git commit –a'', hace commit a los archivos en los que ya se hizo un commit. Es quivalente a usar git add -u antes del commit
+
  
 
===push===
 
===push===
 
 
''git push <remote> <branch>''  
 
''git push <remote> <branch>''  
  
Línea 70: Línea 88:
  
 
===pull===
 
===pull===
 
 
''git pull'', automáticamente hace un merge
 
''git pull'', automáticamente hace un merge
 
 
Línea 76: Línea 93:
  
 
=== Crear ramas ===
 
=== Crear ramas ===
 
 
''git branch <rama>''
 
''git branch <rama>''
  
Línea 82: Línea 98:
  
 
=== Cambiar de una rama a otra ===
 
=== Cambiar de una rama a otra ===
 
 
''git checkout <rama>''  
 
''git checkout <rama>''  
  
 
=== Subir ramas ===
 
=== Subir ramas ===
 
 
''git push –u origin rama_ejemplo''  
 
''git push –u origin rama_ejemplo''  
  
 
=== Mostrar Ramas ===
 
=== Mostrar Ramas ===
 
 
''git branch''
 
''git branch''
  
 
=== Merge ===
 
=== Merge ===
 
 
''git merge <rama>'', desde la rama padre
 
''git merge <rama>'', desde la rama padre
  
Línea 100: Línea 112:
  
 
=== Ver Trabajo Realizado ===
 
=== Ver Trabajo Realizado ===
 
 
''git log'', información sobre los cambios realizados con commits
 
''git log'', información sobre los cambios realizados con commits
  

Revisión de 20:00 22 ene 2016

GitHub es el host de repositorios Git por excelencia, es el punto central de la colaboración de millones de desarrolladores y proyectos.

Para saber más puedes visitar Guía rápida de Github y Estudio sobre GitHub, en este último tienes además un manual detallado disponible. Para más información sobre los comandos y sus opciones puedes introducir man git-<COMMAND> en la terminal o git help <COMMAND> en Git Bash para Windows.


Obteniendo y creando proyectos

init

Inicializa un directorio con o sin contenido como un nuevo repositorio Git.

git init

clone

Hace una copia local un repositorio para que puedas tener acceso a él, tanto visualizarlo como modificarlo.

git clone [<url>]


Haciendo instantáneas

El staging area (área de preparación) es un archivo de tu directorio Git, en él se encuentra qué información estará en el próximo commit. A veces, nos referimos a él como el "índice". El flujo de trabajo básico en Git es algo como:

  1. Modificas archivos en tu directorio de trabajo.
  2. Añades instantáneas de lo archivos a tu área de preparación.
  3. Haces commit, que toma los archivos como están en el área de preparación y guarda esa instantánea permanentemente en tu directorio Git.

Una versión particular de un archivo puede estar commited (está en el repositorio), staged (está en el staging area pero no se le ha hecho commit) o modificada (tiene cambios pero no ha sido añadido al staging area).

add

Añade ficheros al staging area. Añades un archivo cuando quieres incluir los cambios que has hecho a tu próximo commit. Aquello que hayas modificado pero no añadido, no será incluido en el commit.

git add <ficheros>   añade la lista de ficheros separados por un espacio.
git add .   añade recursivamente todos los archivos desde el directorio actual.
git add *   añade todos los archivos en el directorio actual, no recursivo.

status

Ver el estado de tus archivos en el directorio de trabajo y en el staging area.

git status
git status -s   te dará cada entrada de manera más reducida

diff

Muestra la diferencia entre lo que está añadido (staged) y aquello que ha sido modificado pero no añadido. Muestra la diferencia línea por línea.

git diff   muestra el diff de los cambios no añadidos (unstaged) y el último commit
git diff --cached   muestra el diff de cambios añadidos y el último commit
git diff HEAD   muestra el diff de todos los cambios de archivos, tanto añadidos o no, con el último commit
git diff --stat   con esta opción se muestra un resumen de los cambios en lugar de la versión completa 

commit

Guarda una instantánea del staging area.

git commit -a '<message>'    la opción -m permite agregar un mensaje que describa al commit. Su
uso es canónico.
git commit -a   hace commit de los archivos en los que ya se hizo un commit sin tener que pasar por
la etapa de staging
git commit -a '<message> #<num_issue>'    mensaje que hace referencia a un issue

reset

Deshace cambios y commits. Resetea el HEAD (último commit de la rama actual) al estado especificado.

git reset [<commit>] [--] <files>   Copia el estado de las entradas de commit en el staging area. Si
no especificamos el commit, se toma por defecto HEAD (el último commit).
git reset HEAD [--] <files>  Copia el estado de las entradas de HEAD en el staging area, es lo contrario
de hacer  git add files, (hace un "unstage"). Los archivos en tu copia local no se ven afectados. 
git reset --soft <commit>    resetea el HEAD al commit especificado, no afecta al staging area. 
git reset --hard <commit>    resetea el HEAD al commit especificado y revierte todos los cambios en
el directorio a ese commit.

rm

Elimina archivos del staging area

git rm <files>   elimina el archivo del staging area por completo junto al de tu directorio. 
git rm --cached <files>   elimina el archivo del staging area y deja el archivo de tu directorio sin verse afectado.

mv

Renombra archivos en tu repositorio. No es necesario, pues Git puede darse cuenta por comparaciones de qué archivos han sido renombrados. Sin embargo el comando existe y lo que hace es un git rm --cached, renombra en disco y luego usa git add con el nuevo archivo.

git rv <name> <new_name>  

stash

Guarda cambios hechos en el staging area actual y en el directorio de trabajo para luego. Guarda los cambios que no están listos para hacerles commit y que así puedas volver a ellos mientras trabajas en otra cosa. Este comando funciona con una pila de cambios.

git stash   guarda los cambios actuales en la pila.
git stash list   ver lo que hay en la pila.
git stash apply   aplica en el directorio actual los cambios guardados en la cima de la pila.
git stash drop   borra la cima de la pila.



Comandos de Propósito general

push

git push <remote> <branch>

ej: git push origin develop

pull

git pull, automáticamente hace un merge  

Ramas

Crear ramas

git branch <rama>

git checkout -b <rama>, crear y cambiarse a la rama

Cambiar de una rama a otra

git checkout <rama>

Subir ramas

git push –u origin rama_ejemplo

Mostrar Ramas

git branch

Merge

git merge <rama>, desde la rama padre

Se trabajará siempre con ramas locales o específicas (no master ni develop).

Ver Trabajo Realizado

git log, información sobre los cambios realizados con commits


Consejos a seguir

Forma de Trabajo con Ramas

Se asignará una rama específica sobre la que trabaja una persona o grupo de personas. Se creará una rama local sobre la que realizar cambios y desde la rama específica, se realiza el merge con la rama local.

Realización de Commits

  • Agrupar cambios similares en un commit, separar cambios diferentes en varios commits.
  • Evitar los supercommits.
  • Describir los cambios de cada commit correcta y completamente, descripción detallada del cambio.


Flujo de Realización de Trabajo

Ir repositorio -> comprobar estado repositorio (git status) -> actualizar datos (pull) -> crear nueva rama -> ir a la nueva rama -> realizar cambios ficheros -> añadirlos -> realizar el commit -> ir a la rama superior -> realizar merge -> realizar push->volver comprobar estado repositorio (git status).

Trabajo con Issues

  • Mover todos los puntos a realizar a issues.
  • Usar correctamente las etiquetas.
  • Realizar commits más frecuentes usando mensajes significativos.
  • Comentar todo lo importante en las issues que se estén realizando.


Enlaces Externos

GitHub