Last active
July 10, 2025 01:04
-
-
Save nullx5/8ba9a4483ba39b46186c7ef12bc856d0 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
#No modifiques commits publicos | |
#NUNCA RESCRIBIR LA HISTORIA DE RAMAS PUBLICAS(push) - SOLO HACERLO EN RAMAS LOCALES (git rebase | git commit --amend) | |
#HEAD es normalmente el ultimo commit del repositorio(master o main), si no te has movido a otro lado | |
#Los commits normales tienen un solo padre, un merge tiene 2 padres. | |
#Una rama no se crea hasta que tenga un commit. | |
https://www.youtube.com/watch?v=Uszj_k0DGsg | |
https://www.freecodecamp.org/news/git-sim/ | |
https://learngitbranching.js.org/ | |
https://runestone.academy/ns/books/published/opensource/sec_git_branching.html?mode=browsing | |
#herramientas visuales: | |
gitk # solo muestra la rama actual | |
VSC plugin gitgraph # muestra todas las ramas | |
#Convenciones de Commits: | |
feat: agregar nueva funcionalidad | |
fix: corregir bug | |
docs: actualizar documentación | |
style: cambios de formato | |
refactor: refactorización de código | |
test: agregar o modificar tests | |
chore: tareas de mantenimiento | |
git init --bare # repositorio desnudo | |
git init #Iniciar repositorio | |
#CONFIGURAR GIT: | |
git config --global --list #lista todas las configuraciones | |
git config --list #lista todas las configuraciones | |
git config --list --show-origin # Muestra ubicacion del archivo de configuracion y todas las configuraciones | |
git config --global user.name "Blessed" | |
git config --global user.email "john@example.com" | |
git config --global user.password "TOKEN" | |
git config --global color.ui true | |
git config --global init.defaultBranch main | |
git config --global core.hooksPath ~/.githooks | |
git config --global core.autocrlf input -> deja CRLF en los chekouts de Windows, pero LF en Mac y Linux y en el repositorio. | |
# Existen herramientas como dos2unix o fromdos CRLF a LF o viceversa | |
git config --global alias..glog log --graph --oneline | |
git config --global --edit #edicion interactiva con nano del archivo .gitconfig | |
/home/blessed/.gitconfig #Archivo de configuracion en linux | |
C:\Users\ghost\.gitconfig #Archivo de configuracion en windows | |
# Resolver conflictos merge | |
git checkout main | |
git merge feature-branch | |
resolver conflictos | |
git add archivo.txt | |
git commit | |
#IGNORAR ARCHIVOS Y DIRECTORIOS: | |
.gitignore #https://www.toptal.com/developers/gitignore/api/python,pycharm,flask | |
.vagrant/ | |
node_modules/ | |
venv/ | |
__pycache__/ | |
*.env | |
git ls-files --other --ignored --exclude-standar #listar archivos y directorios ignorados en .gitignore | |
git clone #Clonar Repositorio | |
git clone -b booklibrary https://github.com/roxsross/devops-static-web.git # clona repo y cambia automaticamente a la rama booklibrary tambien se descarfa todas las ramas | |
git clone --depth=1 https://github.com/usuario/repositorio.git #solo descarga ultimo commit | |
git clone -b ecommerce-ms --single-branch https://github.com/roxsross/devops-static-web.git ecommerce-ms # solo descarga la rama especificada | |
git status | |
git status -s #nomenclatura | |
M=Modificado | |
D=Delete | |
??=Untracked | |
A= Agregado staging area | |
git ls-files --others --exclude-standard # git status lista todos los archivos nuevos no rastreados | |
git shortlog | grep "username" #lista numero de commits hechos por usuario | |
git shortlog -sn --all --no-merges #lista numero de commits de mayor a menor | |
git commit #sin argumentos para comentarios de mas de una linea | |
git commit -m "mi primer commit" # Crea un commit | |
git commit -a -m "fhfhgfhg" #envia directo al commit desde el working tree, pero solo para archivos previamente commiteados | |
git commit -am "kwjnwkejn" # hace lo mismo | |
#git commit --amend cambia el hash del commit | |
git commit --amend #(sin files en stagin area) SOLO Modifica el mensaje del commit m�s reciente | |
git commit --amend #(Con files en stagin area) Agrega files olvidados al commit mas reciente | |
git commit --amend --no-edit #Actualiza solo los archivos no edita mensaje del commit | |
git commit --amend -m "an updated commit message" #permite escribir nuevo mensaje desde CLI | |
git blame [file] -l #fecha author y cambios en un archivo aplica para archivos sin commitear. | |
git blame [file] | |
git blame -L 67,76 [file] # rango de lineas | |
git blame -c # con opcion -c formatea un poco la salida para legibilidad | |
#SE PUEDE TRABAJAR CON VARIOS REMOTOS | |
git remote -v #Lista los remotos | |
git remote remove [origin] #Limpia los remotos | |
git remote remove origin #Limpia remotos, segun el nombre que se les dio generalmente es origin | |
git remote rename origin destination #renombrar remoto | |
git remote add origin git@github.com:nullx5/Learning-the-Syntax-python.git # Agrega remoto para SSH | |
git remote add origin https://github.com/nullx5/Learning-the-Syntax-python.git # Agrega remoto Para HTTPS | |
[ upstream | |
1-git remote add upstream https://github.com/roxsross/git-exercises.git # desde repo original actualizaciones al dia | |
#útil cuando trabajas con un fork en GitHub y quieres mantener tu copia actualizada con respecto al repositorio original. | |
2-git pull upstream main # <-- si quieres actualizar desde el repo original | |
3-git push origin main #sube las actualizaciones del upstream a tu fork en github. | |
] | |
git remote set-url origin git@github.com:nullx5/lcds.git # para SSH | |
git remote set-url origin https://ghp_5nTJZ2Ymd90t@github.com/nullx5/pull_request.git # para tokens | |
git add -A # Agrega archivos al staging area | |
git add . # Agrega archivos al staging area | |
git add <file> | |
git add <directory> | |
git reset file.py #Elimina o saca archivos del staging area unstage * | |
git reset # Saca todos los archivos del staging area | |
git diff --name-only --cached # Lista todos los archivos en el staging area | |
git restore --staged file.py #unstage | |
git restore <file> #deshacer cambios en working directory | |
git reset --soft HEAD~1 #Elimina el ultimo commit dejando intacta el working area y staging area | |
git reset --mixed HEAD~1 #Elimina el ultimo commit dejando intacta el working area y unstageando los archivos del stagin area | |
git reset --hard HEAD~1 #Elimina el ultimo commit dejando el working area y stagina area limpias | |
HEAD~3 #Elimina los ultimos tres commits | |
HEAD^^ #Otro formato con circunflejo | |
git reset <commit> --hard #cambia al commit indicado y cambia stagin area y working area, Este comando elimina de forma irreversible todos los commits realizados anteriormente. | |
#Recuperarse de un git reset <commit> --hard | |
- Antes de hacer el reset --hard anote el ID de ultimo commit HEAD | |
- comando para recuerarse git reset --hard <el ultimo commit HEAD> | |
git reset <commit> --soft #cambiar al commit indicado pero deja intacto el stagin area con lo que sea que tengas ahí, Este comando elimina de forma irreversible todos los commits realizados anteriormente. | |
git reset --soft HEAD^ #Elimina el ultimo commit dejando intacta el working area* | |
git reset HEAD -- . #Elimina o saca archivos del staging area * | |
git rm --cached <file> #Elimina o saca archivos del staging area * | |
git rm test.txt #Elimina archivo del commit, del stagin area y del working area. | |
git diff #Muestra cambios de archivos entre working area y staging area (cambios grandes usar una GUI)* | |
git diff --staged #Muestra los cambios entre staging area y HEAD actual.* | |
git diff HEAD | |
git diff master #(parado en otra rama diferente de master) compara cambios con master | |
git diff [rama1] [rama2] documento.js #Compara cambios de un archivo en diferentes ramas | |
git diff [rama1] [rama2] #compara diferencias entre 2 ramas | |
git diff <commit1> <commit2> #Compara cambios entre diferentes commits el orden importa poner al final el commit mas nuevo | |
git diff <commit1> <commit2> fichero #Compara cambios de un archivo en diferentes commits | |
git diff commitXXX config.py #Compara cambios de un archivo en el working directory contra un commit en localrepo | |
git diff commitXXX #comparar todos los archivos contra el commit | |
git diff --graph #indica las mezclas(fusiones-merge) que se han hecho en esa rama | |
git show #muestra todos los cambios en el ultimo commit | |
git show [commit] #muestra todos los cambios en un commit dado | |
git show file.txt # muestra todos los cambios de ese archivo | |
git log #muestra todos los commits hash autor y fecha | |
git log --since=2015-09-29 #buscar commits por fechas | |
git log file.py #muestra todos los commits de ese archivo | |
git log -p #muestra todos los commits hash autor fecha y cambios | |
git log --oneline #muestra hash y texto del commit en una sola linea | |
git log --name-only #Muestra archivos agregados en el commit | |
git log --name-status #Muestra estado de los archivos agreados al commit | M=Modificado | A= Agregado | |
git log 132b301 --stat #Stadisticas cuantas lineas se agregaron en un archivo en un commit particular | |
git log --stat #Estadisticas cuantas lineas se agregaron en un archivo | |
git log --follow [file] #Muestra historia de archivo, commits en los que fue afectado | |
git log --author="[Blessed]" #Muestra todos los commits de un autor | |
git log --oneline | wc -l #Lista Numero de commits | |
git log --graph --oneline --all #grafico de linea de comando de todas las ramas | |
git log --graph --oneline --decorate --all | |
git log --oneline <rama> #ver los commits de una rama en particular | |
git log --oneline <rama> ^master #ver que commits estan en una rama y que no estan en la otra | |
git log origin/main..main # commits en local pero no en remoto | |
git log main..origin/main # commits en remoto pero no en local | |
git grep "" #Hacer busquedas en archivos | |
git grep -n "" # hace busqueda lista archivos y numero de linea donde hay concidencias | |
git grep -c "" # hace busqueda lista archivos donde hay concidencias y su cantidaad | |
git log -S "" #Hacer busquedas en commits | |
git tag -a v1.0.0 -m "Release versión 1.0.0" # agregar tag verbose se agrega al ultimo commit | |
git tag -a v1.0.0 -m "Release versión 1.0.0" <commit> #Agregar tag a un commit especifico | |
git tag #ver tags | |
git show v1.0.0 #ver tag especifico | |
git show-ref --tags #ver tags y su commit asociado | |
git push origin --tags #enviar todos los tags a github | |
git push origin v1.0.0 # Push del tag | |
git tag -d tag-name #eliminar tag | |
git push origin :ref/tags/tag-name #eliminar tag en github | |
hacer push de un archvio eliminado en local hacia github eliminar | |
git status | |
deleted: nombre-del-archivo.txt | |
git add nombre-del-archivo.txt | |
git commit -m "Eliminado archivo innecesario nombre-del-archivo.txt" | |
git push origin main | |
DESHACER CAMBIOS: | |
git revert #investigar que hace, aparentemente desmergea un commit o desfusiona el commit | |
git clean -f: #Elimina todos los archivos no rastreados, los archivos no se pueden recuperar fácilmente. | |
git clean -df: #Elimina archivos no traqueados y directorios vacíos * | |
git clean -n: #Realiza una simulación del comando, mostrándote qué archivos se eliminarían sin llegar a borrarlos. Esto es útil para verificar qué se eliminará antes de ejecutar el comando real. | |
git clean -X: #Ignora las excepciones en el archivo .gitignore. | |
git checkout <hash_commit> #cambia al commit - se actualiza el working directory - con la info del commit | |
git checkout master #Cambiar a la rama master | |
git checkout - #cambiar de rama | |
#NO CAMBIAR DE RAMA sin commitear antes, o se pierden todos los archivos del working area | |
git push -f origin master #Elimina el ultimo commit en github(sin borrar el working area) | |
git push -u origin master #Empuja rama al repositorio remoto(solo se puede empujar una rama a la vez) | |
git push --force # fuerza a github a ser igual que el repo local | |
git push origin main --force | |
git push heroku master #Empuja a heroku | |
git fetch origin #trae o descarga rama de repo remoto | |
git merge <name_branch> #FUSIONA RAMAS PARARSE EN RAMA MASTER - HAY 2 TIPOS DE MERGE: | |
#Usar git merge cuando no hay commits en master por delante de la otra rama: | |
fast-forward(no crea nuevo commit) | |
recursive(crea nuevo commit - con mensaje [Merge branch 'name_branch'])Ensucia linea temporal | |
#Cuando hay commits en master por encima de otra rama -> mejor usar GIT REBASE: | |
#deshacer git revert -m 1 [commit] | |
git reset --merge [commit] | |
REESCRIBIR LA HISTORIA: #combina commits y modifica el historial de una rama | |
#cambiar a rama diferente a master y hacer: | |
git checkout otra_rama | |
git rebase master #Aplana y cambia el hash de los commits que rebasaron, los antiguos conservan su hash | |
#Luego cambiar a master y hacer: | |
git checkout master | |
git merge otra_rama #al haber hecho el rebase ahora el merge se hace por fast fordward | |
#Esto pone los commits de la otra rama adelante de los commits de master | |
#linea de tiempo m�s limpia | |
#Deshacer git rebase: | |
git rebase --abort #este funciono | |
git reflog | |
git reset --hard HEAD@{n} | |
git log HEAD@{n} | |
git rebase -i #modo interactivo,modifica historial de una rama,combina commits, cambiar orden, cambia mensaje | |
git rebase -i HEAD~4 #HEAD~4 indica que commits queremos afectar en este caso los ultimos 4(OJO CAMBIA TODOS LOS HASH) | |
#REBASE INTERACTIVO: | |
# En el editor, cambiar 'pick' por: | |
# - reword: cambiar mensaje del commit | |
# - edit: pausar para modificar commit | |
# - squash: combinar commits | |
# - drop: eliminar commit | |
git reflog # Muestra historial de cambios y commits | |
git pull origin master #trae repositorio remoto en rama master (sincroniza local y remoto) | |
git pull #Es un fecth + merge al mismo tiempo jala repo github | |
git fetch origin | |
git merge origin/master | |
git pull --rebase <remote> #Descarga de remote pero No fusiona | |
git pull --no-commit <remote> #Descarga de remote pero No fusiona | |
git pull --verbose | |
git pull origin master --allow-unrelated-historie | |
git branch #Muestra todas las ramas locales existentes y en cual estas parado | |
git branch -r #Muestra todas las ramas remotas en github | |
git ls-remote --heads origin #Muestra todas las ramas remotas en github | |
git brach --all #Muestra todas las ramas incluso las remotas | |
git branch -v #Muestra el ultimo commit de cada rama | |
git branch -a #Muestra ramas oculta origin master | |
git branch <name_branch> #Crea rama | |
git checkout <name_branch> #mueve a rama | |
git checkout -b <name_branch> #Crea rama y cambia a esa rama | |
git switch -c "nombre rama" #Crea rama | |
git switch nombre-rama #Cambia a rama | |
git branch -D <name_branch> # Elimina rama | |
git branch -d <name_branch> # Elimina rama | |
git push origin :mi-rama-remota #Elimina rama remota (git push remote-name local-branch :remote-branch) | |
git push origin --delete mi-rama-remota #Elimina rama remota | |
git push remote-name local-branch :remote-branch # branch remote develop | |
git cherry-pick <hash-commit> #Toma el commit que desee de otra rama, copia el commit pero cambia el hash | |
git cherry-pick -e <hash-commit> #Toma el commit que desee de otra rama, pero editando el mensaje del commit. igual cambia el hash | |
git cherry-pick -n $(git rev-parse [name_rama]) $(git rev-parse [name_rama]~1)#Trae contenido de un commit,sin hacer un nuevo commit(deja contenido en el stagin area) | |
git cherry-pick --abort | |
git stash -> guardado rapido y limpia working directory | |
git stash pop -> recupera el stash sacandolo de la pila | |
git stash pop stash@{0} ->recupera stash por numero sacandolo de la pila | |
git stash apply stash@{0} -> recupera stash por numero sin sacarlo de la pila (para usarlo en varias ocasiones) | |
git stash list -> lists todos los stash | |
git stash drop -> elimina los stash uno por uno de la pila | |
git stash drop stash@{n} -> elimina stash por numero | |
git stash branch name-rama #pasa el stash a una rama y se cambia automaticamente a esa rama | |
git stash clear #borra toda la lista de stash | |
Si usas git stash sin hacer git add, Git guardará en el stash, solo archivos ya rastreados por Git, NO sin rastrear. | |
git stash -u --include-untracked # Guarda cambios en archivos rastreados + nuevos sin seguimiento. | |
git stash -a --all # Guarda todo, incluyendo archivos ignorados. | |
#ENCONTRAR BUGS:https://github.com/bradleyboy/bisectercise | |
git rev-list --max-parents=0 HEAD #encuentra el primer commit del repo | |
git bisect start | |
git bisect bad HEAD #commit que tiene bug | |
git bisect good c1fd602276 #commit funcionando todo OK | |
ir probando commits dando [git bisect bad] o [git bisect good] hasta enontrar el commit que tiene el BUG | |
git bisect reset #vuelve al commit original antes de empezar git bisect | |
"!git remote update -p; git log ..@{u}" | |
log @{u}.. | |
HEAD detached at -> git checkout master | |
dpkg -l lista todos los paquetes instalados | |
dpkg -l | grep apache2 #Informaciom de paquete | |
apt show apache2 #Informaciom de paquete | |
dpkg -L openssh-server lista las path del paquete | |
service --status-all | |
##################################################################################################################################### | |
remote: error: Your local changes to the following files would be overwritten by merge: | |
remote: file.config | |
remote: Please, commit your changes or stash them before you can merge. | |
tu archivo file.config tiene cambios y que es diferente al que esta en el repositorio, puedes hacer commit de tus cambios o hacer git stash para que no se reescriba tu archivo file.config. | |
Crear repo en github sin readme para evitar conflictos si ya tienes un readme en local | |
crear par keys privada y publica, agregar key publica a github - ssh-keygen -b 4096 -t rsa | |
agregar repositorio remote ssh - git remote add origin git@github.com:nullx5/Learning-the-Syntax-python.git | |
revisar git remote -v | |
empujar código a github - git push -u origin(nombre de repositorio) master(nombre rama) | |
opcion -u permite usar en adelante solo git push | |
################################################################################################################################# | |
Crear pull request: | |
fork | |
git clone | |
git checkout -b <name_branch> | |
creo mis cambios commits | |
git push -u origin <name_branch> | |
new pull request | |
configurar repositorio y rama que envia y repositorio y rama que recibe. | |
agregar descripcion y revisores | |
create pull request | |
merge pull request | |
################################333 | |
wget https://github.com/jesseduffield/lazygit/releases/download/v0.46.0/lazygit_0.46.0_Linux_x86_64.tar.gz | |
7z x lazygit_0.46.0_Linux_x86_64.tar.gz | |
sudo install lazygit -D -t /usr/local/bin/ | |
q salir | |
? ayuda | |
esc retroceder | |
P == push | |
p == pull | |
tab cambiar entre secciones o por numero 1 2 3 4 | |
seccion1 : | |
status | |
seccion 2: | |
barra espaceadora == git add | |
c == git commit | |
seccion 3: | |
barra espaciadora == cambiar de rama | |
n == nueva rama | |
d == borrar rama | |
M == merge | |
seccion 4: | |
lista de commits | |
seccion 5: | |
pila de stash | |
command log: | |
historial de comandos |
Author
nullx5
commented
Aug 30, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment