GIT - Utilizando GIT, comandos básico

Inicializar repositorios

Inicializar un repositorio en el directorio actual.

git init

Inicializar un repositorio especificando un direcotrio (si no existe se creará), para los reposotorios suele utilizarse el .git en el nombre.

git init NOMBRE_REPOSITORIO.git
git init /directorio/local/repositorio.git

Inicializar repositorios para utilizar como servidor.

git init --bare NOMBRE_REPOSITORIO.git
git init --bare /directorio/local/repositorio.git

# Añadir permisos de escritura al grupo directamente al crear el repositorio
git init --bare --shared=group NOMBRE_REPOSITORIO.git
git init --bare --shared=group /directorio/local/repositorio.git

Clonar un respositorio. Puede ser un repsotorio local o remoto.

git clone REPOSITORIO
git clone /directorio/local/repositorio.git
git clone https://servidor.es/remoto/repositorio.git
git clone ssh://[email protected]:22/directorio/remoto/repositorio.git

Ver listado de commits realizados.

git log

Estado actual del directorio de trabajo, mostrará los ficheros modificados desde el último commit

git status

Ver modificaciones en un fichero concreto del repositorio respecto al último commit

git diff FICHERO
git diff ruta/fichero.ext

Preparar/añadir las modificaciones realizadas en el directorio de trabajo para el siguiente commit. Es provisional mientras no se realiza un commit y se pueden seguir realizando modificaciones o descartarlas.

git add [OPCIONES]
git add .       # Añadir todos los cambios 
git add -A      # Añadir todos los cambios incluyendo ficheros eliminados
git add --all   # Añadir todos los cambios incluyendo ficheros eliminados
git add ruta/al/fichero.ext # Añadir ficheros específicos

Guardar los cambios en el repositorio añadidos con git add. Una buena practica es incluir un comentario descriptivo.

git commit -m"COMENTARIO_DESCRIPTIVO"

Añadir los cambios y hacer commit al mismo tiempo.

git commit -am"COMENTARIO_DESCRIPTIVO"

Añadir los cambios al último commit.

git add .
git commit --amend
# Si no queremos modificar el texto de commit
git commit --amend --no-edit

Recuperar un fichero eliminado del directorio de trabajo (sistema de ficheros local).

git checkout -- fichero.ext
git checkout -- ruta/al/fichero.ext

Eliminar un fichero para no continuar controlando sus versiones en el repositorio (eliminador del índice del repositorio). Además este comando por defecto elimina el fichero del directorio de trabajo (sistema de ficheros local).

git rm fichero.ext

# Mantener el fichero en directorio de trabajo (sistema de ficheros local local)
git rm --cached fichero.ext

# Borrar directorio recursivamente
git rm -r directorio/

Al eliminar un fichero utilizando el comadno git rm no será posible recuperarlo utilizando un git checkout -- fichero.ext se fue eliminado del índice del repositorio. En este caso tendremos que recuperarlo en el índice utilizando un commit anterior. Podemos utilizar git reset y luego recueprar el fichero.

git reset HEAD fichero.ext
git reset HEAD ruta/al/fichero.ext
git checkout -- fichero.ext
git checkout -- ruta/al/fichero.ext

# Podemos utilizar el puntero HEAD o cualquier otra referencia para restaurar el índice
git reset HEAD^ fichero.ext
git reset HEAD~1 fichero.ext
git reset HEAD~2 fichero.ext
# ...
git reset HEAD~N fichero.ext

Listar ramas del repositorio (indica también en cual nos encontramos).

git branch

Crear una rama.

git branch NOMBRE_NUEVA_RAMA

Crear una rama y cambiar a la nueva rama al mismo tiempo.

git switch -c NOMBRE_RAMA

Cambiar entre ramas.

git switch NOMBRE_RAMA

Eliminar rama.

git branch -d NOMBRE_RAMA
git branch -D NOMBRE_RAMA # Forzar borrado cuando la rama no tiene merge

Unir rama actual con otra rama.

git merge NOMBRE_RAMA

Mostrar las ramas que no están unidas con la actual.

git branch --no-merge

Fetch

git fetch
git fetch --all

Pull

git pull
git pull --all

Actualizar los cambios guardados en el repositorio local en un respositorio remoto.

git push --all # Actualizar todas las ramas
git push NOMBRE_REMOTE NOMBRE_RAMA # Actualizar una rama en un repositorio remoto concreto
git push origin master

Ver los origenes remotos configurados

git remote -v

Añadir un origen remoto a un repositorio creado localmente.

git remote add NOMBRE_REMOTE REPOSITORIO_URL
git remote add origin ssh://[email protected]:22/directorio/remoto/repositorio.git
git remote add otro_oservidor ssh://[email protected]:22/directorio/remoto/repositorio.git

Modificar el origen remoto.

git remote set-url NOMBRE_REMOTE REPOSITORIO_URL
git remote set-url origin ssh://[email protected]:22/directorio/remoto/repositorio.git
git remote set-url otro_oservidor ssh://[email protected]:22/directorio/remoto/repositorio.git

Parámetros de configuración

Ver variables

git config user.name
git config user.email
git config --global user.name
git config --global user.email

Establecer variables

git config user.name "Your Name"
git config user.email "[email protected]"
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

Quitar una variable establecida

git config --unset user.name
git config --unset user.email
git config --global --unset user.name
git config --global --unset user.email