Skip to content

Instantly share code, notes, and snippets.

@javieroot
Last active August 29, 2020 00:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save javieroot/0cde1a746dd1a7e73e789942f2f1e2fd to your computer and use it in GitHub Desktop.
Save javieroot/0cde1a746dd1a7e73e789942f2f1e2fd to your computer and use it in GitHub Desktop.
Comandos para la administración de repositorios git
# Iniciar un repositorio vacío en el directorio actual aunque existan archivos, estos se deben agregar enseguida con git add
git init
# Hacer una copia local de un repositorio
git clone nombre_url_repositorio
# Agregar configuración del usuario actual
git config --global user.email "usuario@dominio"
git config --global user.name "usuario"
# Cómo ver los valores de la configuración, por ejemplo los anteriores y los alias definidos en git
# En modo de edición
git config --global -e
# En modo de lectura
git config --global -l
# Configuración del push
git config --global push.default simple
# Herramienta para resolver confictos
git config --global merge.tool vimdiff
# Lista de configuraciones
git config --list
# Conocer la lista de repositorios
git remote
# Conocer las URL de la lista de repositorios
git remote -v
# obtener información del repositorio
git remote show origin
# Conocer todas las ramas del repositorio:
# Ramas en local
git branch
# Ramas remotas
git branch -r
# Todas las ramas(local y remotas)
git branch -a
# Obtener los últimos cambios
git fetch
# Revisar las diferencias
git diff ...origin
# Obtener los últimos cambios y hacer la mezcla
git pull
# Agregar archivos al stage
# Agregar todos los archivos al stage
git add .
# Agregar un archivo (ruta opcional)
git add src/Controller/InformesController.php src/Template/Informes/index.ctp
# Agrega todos los archivos txt de todo el proyecto
git add "*.txt"
# Agrega todos los archivos txt en el direcotrio actual
git add *.txt
# Agrega todos los archivos sin excepción
git add --all
git add -A
# Agrega los archivos que listemos separados por espacio
git add <lista de archivos>
# Agrega todos los pdf dentro de la carpeta pdfs
git add pdfs/*.pdf
# Agrega todos los archivos dentro de la carpeta pdfs
git add pdfs/
# Agregar mensaje
git commit -m "Controlador de los Informes"
# Si no se pone la opción -m "mensaje" se abre el editor de texto predeterminado para poner comentarios en múltiples líneas
# Enviar cambios de la rama actual
git push
# Si aparece error de fin de línea (normalmente por el S.O.)
git config core.autocrlf true
# Cambiar de rama
git checkout rama
# Cambiar de rama, si no existe se crea y se hace el cambio
git checkout -b nueva-rama
# Remover un archivo de git(lo borra de git y de el directorio(del filesystem))
git rm file1.txt
git commit -m "remove file1.txt"
# Puede ser necesario forzar el borrado, probar el siguiente comando:
# Elimina los archivos de Git y del disco duro. Git guarda el registro de la existencia de los archivos,
# por lo que podremos recuperarlos si es necesario (pero debemos usar comandos más avanzados).
git rm --force file1.txt
# Pero si solo se quiere borrar del repositorio y no del filesystem:
git rm --cached file1.txt
git commit -m "remove file1.txt"
# Enviar los cambios al repositorio remoto
git push
# Para eliminar una rama de nuestro repositorio local ejecutaremos el siguiente comando:
git branch -d nombre_rama
# En el caso de que esa rama contenga trabajos sin fusionar, el comando anterior nos devolverá el siguiente error:
# error: The branch 'nombre-rama' is not an ancestor of your current HEAD.
# If you are sure you want to delete it, run 'git branch -D nombre-rama'.
# Si aún así queremos eliminar esa rama, se puede forzar el borrado de la siguiente manera:
git branch -D nombre-rama
# En el caso de querer eliminar una rama del repositorio remoto, la sintaxis será la siguiente:
git push origin :nombre-rama
# Y de esta forma, desaparecerá la rama nombre-rama del servidor.
# Resolver conflictos en merge
# Fuente: https://www.git-tower.com/learn/git/faq/solve-merge-conflicts
# Abortar un merge
git merge --abort
# Mostrar los archivo con conflictos
git status
git diff --name-only --diff-filter=U
# Elegir que cambios dejar
# Editar a mano
# Los cambios propios
git checkout --ours path/to/conflict-file.css
# Los cambios de la otra rama
git checkout --theirs path/to/conflict-file.css
# Marcar cada archivo en el que se han resuelto conflictos
git add <filepath>
# Confirmar la solución de conflictos como cualquier otro cambio
git commit -m "Mensaje"
# Ver los commits
git log
# Ver los commits de forma corta
git log --oneline
# Ver los commits de forma corta y elegante
git log --oneline --decorate --all --graph
# Agregar alias, útil para comando largos
git config --global alias.lg "log --oneline --decorate --all --graph"
# Después de alias. estará el alias definido por el usuario
# git lg dará la misma salida que git log --oneline --decorate --all --graph
# Mostrar los cambios en el repositorio (cambios en archivos)
git status
# Opción silent(menos información, solo la necesaria)
git status -s
# Opción silent y rama (se muestra la rama de trabajo, se podría configurar el prompt del S.O.)
git status -s -b
git status -sb
# Quitar archivo del stage sin eliminar los cambios
git reset archivo.txt
# Deshacer cambios en un archivo hasta el commit de inicio pero sin antes hacer el nuevo commit
git checkout archivo.txt
# A veces sucede que enviamos commits a git con mensajes incorrectos, supongamos que ya se envió un commit de este estilo:
# git commit -m "Mensaje incorrecto"
# Para corregir el mensaje de este último commit se hace lo siguiente:
git commit -m "Mensaje corregido" --amend
# Si faltaron cambios en un commit, se pueden agregar(checar el head):
git reset --soft HEAD^
# HEAD apunta al último commit, HEAD^ al penúltimo commit
# en lugar de HEAD y HEAD^ se puede usar el hash o id que arroja git log --oneline --decorate --all --graph
# algo como 0a0c63e y se puede modificar cualquier commit
git status
# Aparecera doble M, significa que se modificó y agregó
# Se agrega lo que faltaron
git commit -am "Mensaje que al final aparecerá en el commit"
git status
# El git reset --soft HEAD hash nos ubica en el commit del hash elegido
# El git reset --soft HEAD hash no borra los cambios hechos de los commits posteriores al reinicio
# y se pueden agregar cosas y esos cambios que formarán parte del nuevo commit que reemplazará a
# los commits posteriores al reinicio
# Después de hacer los cambios:
# git add .
# git commit -m "Nuevo mensaje"
# Regresar a un commit en específico:
# Fuente:
# https://es.stackoverflow.com/questions/114626/deshacer-un-merge-branch-master-a-mi-current-branch
# Puedes ver todos los estados con el comando git reflog el resultado será una lista de estados con la primera columna
# siendo el codigo para su respectivo estado.
# Luego con el comando git reset --hard {poner codigo de la lista} puedes volver al estado que tu desees.
por ejemplo para volver al estado HEAD@{2} el comando seria:
git reset --hard fbebd80
Nota: para saber a que estado ir puedes basarte en el comentario de la ultima columna
Otra solucion alternativa seria guardar en un borrador, limpiando el branch actual con el comando git stash save
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment