Last active
August 29, 2020 00:00
-
-
Save javieroot/0cde1a746dd1a7e73e789942f2f1e2fd to your computer and use it in GitHub Desktop.
Comandos para la administración de repositorios git
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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