Last active
January 5, 2023 16:32
-
-
Save mariogonzcardona/bd47fa68e241c50389c9aec75609f562 to your computer and use it in GitHub Desktop.
Git Commands
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
🛠 FLUJO DE TRABAJO | |
git init nombreDelRepo Para iniciar un nuevo repositorio | |
git init Si nos encontramos en el directorio que queremos como repo | |
rm -rf .git de algún repo para que éste deje de serlo | |
git add nombreArchivo para agregar un Untracked file del working directory al staging area | |
git add -A para agregar todos los archivos que tenemos | |
git add . funciona como el anterior | |
git rm --cached (Sin el espacio) para remover un archivo del staging area | |
git status para saber qué y dónde se encuentra | |
git commit -m ‘message’ Para comprometer lo que modificaste -m para agregar un mensaje | |
git commit --amend Por si te equivocaste y quieres agregar un cambio, no crea un nuevo commit, se fusiona con el commit anterior, tienes que hacer un add antes | |
git commit --am para hacer git add y git commit al mismo tiempo. Sólo funciona con archivos a los que ya les hiciste add antes, a los completamente nuevos no les hará nada. | |
🔖 TAGS | |
git tag -a ‘version’ agregará una etiqueta al último SHA | |
— hacer *git tag -a ‘versión’ SHA1234567890abcdf para especificar a que SHA tageas | |
git tag -l Para ver las tags de los SHA | |
git tag -d Para borrar una etiqueta | |
git tag -f -a ‘version’ -m ‘messge’ SHA1234567890abcdf para renombrar un tag. OJO: después hay que eliminarlo porque si no se queda así | |
git push origin --tags mandas los tags al repositorio remoto | |
git push origin :refs/tag/nombre-del-tag Para remover el tag del repositorio remoto | |
🚃 LOGS | |
git log Rastro de nuestro proyecto | |
git log --oneline muestra los SHA en una sola línea | |
git log --graph muestra las ramas | |
Comando especial de Alias | |
**git config --global alias.superlog “log --graph --abbrev-commit --decorate --date=relative --format=format:’%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)’ --all” ** | |
Sólo queda que ustedes hagan en lugar de git log, git superlog y encontrarán belleza | |
COMPARACIONES | |
git show <archivo> Para ver los cambios del archivo | |
git diff SHA1 Para comparar el estado final con el commit | |
git diff SHA2 SHA1 Para comparar entre dos commits (mostrará que se borraron cosas) | |
git diff SHA1 SHA2 mostrará que se agregaron cosas, sigues comparando commits | |
git checkout SHA1 <archivo> te lleva a ese momento de la historia. No hagas commit si no quieres que ese cambio se quede para siempre, de lo contrario, hazlo 😉 | |
git checkout master <archivo> vuelves a la última versión | |
CTRL + Z | |
git reset --soft SHA1 desde qué commit quiero quitar los cambios, ese commit se va quedar tal cual y se eliminarán los cambios posteriores | |
git reset --mixed SHA1 hace lo mismo sólo que el commit que pusiste se deja en el Working Directory | |
git reset --hard borra absolutamente todo. Actúa desde donde está | |
—Archivos recién agregados en Working Directory no son afectados, están fuera de la jurisdicción de git | |
git reflog … Créeme, lo vas a necesitar. 👇🏼 | |
⚠️WARNING. | |
Si eliminaste un SHA por accidente con git reset --hard puedes traerlo de vuelta con git reflog aparecerá el historial de git, después haces git reset --hard SHA y lo traes de vuelta a la vida | |
RAMAS | |
git branch nombreRama para crear nueva rama | |
git branch -l para listar ramas | |
git branch -d nombreRama para eliminar cierta rama, “D” en lugar de “d” para forzar la eliminación | |
git branch -m nombrePrevio nombreNuevo para renombrar ramas | |
git checkout nombreRama para movernos entre ramas | |
git checkout SHA para movernos a una instancia de nuestro proyecto y sacar de ahí una nueva rama | |
git checkout -b nombreRama creas una nueva rama y te mueves a ella | |
git show-branch --all Muestra las ramas que hay y una breve historia de como se han comportado | |
gitk Muestra como se han comportado las ramas d una manera muy visual | |
MEZCLA DE RAMAS | |
git merge ramaAMezclar Mezcla la rama que escribiste con la rama en la que estás | |
Si hay un conflicto de mezcla, puede ser que tengas que meter mano al editor | |
git rebase nombreRama para tener un seguimiento lineal sobrescribiendo la historia de nuestro código | |
git rebase -i nombreRama Nos abrirá el editor para acceder a otras modalidades | |
GUARDAR ESTADO | |
git stash guarda un estado en el que te encontrabas para poderte mover a otra rama sin hacer commit, el cambio tiene que estar en staging area | |
git stash list muestra las referencias a los diferentes stash que ya tenías | |
git stash drop stash@{x} para eliminar un stash | |
git stash apply Vamos a aplicar nuestros cambios | |
git stash apply aplica el ultimo estado guardado | |
git stash apply stash@{x} agrega un stash al que tú ya hiciste referencia | |
git stash pop trae el último cambio que guardaste sin agregarlo a staging | |
git stash branch nombreDeLaNuevaRama crea una rama y las últimas modificaciones que fueron ”stasheadas” en otra rama las trae a la nueva sin agregarla a staging | |
🍒 CEREZAS | |
git cherry-pick SHA sobre una rama para traer un commit de algún lugar y dejarlo en la rama actual, donde se supone debería ir | |
CLONANDO | |
git clone dirHtml para clonar tu repositorio | |
ssh-keygen -t rsa -b 4096 -C "[email protected]” Para crear una llave publica | |
pbcopy < ~/.ssh/id_rsa.pub para copiar al clipboard | |
git remote add origin direcciónDeTuRepo para crear un repositorio remoto de nombre Origin por convención | |
git remote -v para revisar si tenemos el repositorio remoto | |
git remote remove origin para remover repositorio remoto origin, por convención | |
git fetch origin traer archivos desde el directorio remoto, origin por convención | |
git pull origin master para traer del repositorio remoto lo que hay en esas ramas | |
git push origin master a dónde vamos a enviar nuestros archivos | |
git push origin master --tags enviar los tags de nuestros proyectos | |
git push Origin algunaRama para enviar otra rama a Internet, a nuestro repositorio remoto | |
LIMPIAR | |
git clean --dry-run Para visualizar qué archivos se van a borrar. Archivos, no carpetas | |
git clean -f Para borrar los archivos que visualizaste: Ignorará lo que esté dentro del archivo .gitignore | |
git clean -df Borra archivos y carpetas | |
BUSCAR PALABRAS | |
git grep <palabra> busca la palabra en todos tus archivos dependiendo de la rama | |
git grep -n <palabra> Te dice dónde está y la línea | |
git grepp -c <palabra> Te dice cuántas veces usaste esa palabra por archivo | |
Si en algún momento estás haciendo cosas raras y la palabra no la… ¿acepta?, ponle comillas. Ejemplo: <p>, no va a funcionar ”<p>” sí | |
Otros comandos útiles | |
git config --global alias.stats “shortlog -sn --all --no-merges” después sólo haz git stats . Te mostrará cuántos commits han hecho cada miembro del equipo, de una manera más abreviada y sin contar los merges | |
git blame Para ver quién tuvo la culpa de qué. | |
git blame rutaArchivo -L11,22 Te dirá quién modificó qué del archivo que pusiste. La -L es para indicar de qué línea a qué línea quieres ver el comando. | |
git branch -r ves ramas remotas. | |
git branch -a ves todas las ramas. |
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
Comandos de Git y Github | |
git init / Inicializa o crea una carpeta .git que representa una base de datos atomica y detecta cualquier cambio en los archivos. | |
git rm --cached "Filename.extension" / Remueve ese archivo de stage pero no se elimina el archivo | |
git rm --cached *.* / Remueve de stage todos los archivos | |
git rm --cached / Elimina los archivos de nuestro repositorio local y del área de staging, pero los mantiene en nuestro disco duro. Básicamente le dice a Git que deje de trackear el historial de cambios de estos archivos, por lo que pasaran a un estado untracked. | |
git rm --force / Elimina los archivos de Git y del disco duro. Git siempre guarda todo, por lo que podemos acceder al registro de la existencia de los archivos, de modo que podremos recuperarlos si es necesario (pero debemos usar comandos más avanzados). | |
git add . / Agrega todos los archivos a stage | |
git commit -am "Mensaje" / Este comando crea un histórico de los cambios realizados hasta ese punto e la historia | |
Configuracion de globales | |
git config --list / Lista todas las configuraciones por defecto y las cosas que faltan | |
git config --list --show-origin / Muestra la ruta o donde estan las configuraciones guardadas | |
git config --global user.name / Aqui agregamos o cambiamos el nombre de usuario | |
git config --global user.emal / Aqui agregamos o cambiamos el correo | |
Si tienes instalado vscode | |
code nombre_archivo / Abre el editor para ese archivo en particular | |
git log / muestra todos los commits realizados desde el más reciente hasta el mas antiguo | |
git show nombre_archivo / Muestra una serie de cambios a un archivo en particular NOTA: después del commit | |
git commit / Sin mensaje muestra un editor en terminal para agregar un mensaje | |
Para salir del editor del mensaje de commit es ESC, SHIFT Z Z | |
git diff id_commit_viejo id_commit_reciente / se usa para comparar diferentes commits usando su id | |
git reset id_commit --hard / devuelve al estado de ese commit sin dejar cambios en staging | |
git reset id_commit --soft / devuelve al estado de ese commit dejando los cambios en staging | |
git reset --soft / Borramos todo el historial y los registros de Git pero guardamos los cambios que tengamos en Staging, así podemos aplicar las últimas actualizaciones a un nuevo commit. | |
git reset --hard / Borra todo. Todo todito, absolutamente todo. Toda la información de los commits y del área de staging se borra del historial. | |
git log --stat / Devuelve los cambios más específicos de cada commit, en cada archivo. | |
git checkout id_commit / Cambia entre commits y si se quiere mantener ese commit con master se tiene que crear otro commit | |
git branch "Nombre _rama" / Para poder crear una rama en particular, tomara todos los commits anteriores hasta ese punto, después seguirá su rumbo a menos que se haga un merge | |
git checkout -b "Nombre_rama" / Crea una rama y aparte de cambia en automático a esa rama | |
git remote add origin URL / esto agrega un origen del repo local al repo en la nube | |
git remote -v / Muestra de formas más verbal el origen ya configurado | |
git pull origin master --allow-unrelated-histories / Permite fusionar los cambios de github con el repo local creando un nuevo commit | |
git branch -m master main /cambiar el nombre de master a main desde un principio cuando se trabaja sobre git init | |
SSH Cifrado Asimetrico | |
ssh-keygen -t rsa -b 4096 -C "[email protected]" / Genera una llave pública y privada en .ssh | |
eval $(ssh-agent - s) / Como resultado nos devuelve el proceso con un id agent "agent pid 4724" | |
ssh-add ~/.ssh/id_rsa / Agregamos la llave | |
Arbol | |
git log --all --graph --decorate --oneline | |
gitk / Para visualizar commits de forma gráfica los commits | |
Flujo de trabajo profesional con Pull requests | |
Call Review |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment