From f5c2b1cf70d2d3a7264b531f50bbfa0bd46e7e22 Mon Sep 17 00:00:00 2001 From: "jp.av.dev" Date: Thu, 16 Jul 2020 01:26:05 -0400 Subject: [PATCH] =?UTF-8?q?...en=20construcci=C3=B3n...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Comandos-Basicos-Git.md | 238 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 Comandos-Basicos-Git.md diff --git a/Comandos-Basicos-Git.md b/Comandos-Basicos-Git.md new file mode 100644 index 0000000..20cf4be --- /dev/null +++ b/Comandos-Basicos-Git.md @@ -0,0 +1,238 @@ +# Hoja de comandos basicos git +----- +## Instalar y configurar user: + +``` +# Repositorio, ej. +add-apt-repository ppa:git-core/ppa +``` +``` +git --version + +git config --global user.name "Nombre" +git config --global user.mail "Mail Git" +``` + +``` +# Lista de configuracion global +git config --global --list + +# Ayuda +git help (comando) +``` +# Secuencia tipica de uso: +## Crear repositorio en directorio actual +``` +git init +git add [archivo odirectorio] +git add -A (Agregar todo a confirmacion) + +git commit -m "Mensaje" + +# add -A + Commit +git commit -am "Mensaje" + +git commit -m "--amend para sobreescribir el ultimo commit" --amend +``` +### HEAD, puntero, indica el commint en el cual esta situado el puntero de git + +### Listar Ramas +`git branches --list` + +### Otros +``` +git status +git log +git config --global alias.[alias] "comando" # Alias +``` +## Git Reset +#### RESET +##### deja el proyecto en el stado del commit indicado +##### ***--hard --mixed --soft*** + + +#### HARD: +##### Working Dir = Staging Area = Repository +`git reset --hard [SHA commit]` + + +#### MIXED: Staging Area = Repository. Working Dir a la espera de la iteracion basica (add, commit) + Sire para encapsular por ejemplo: restear 5 commits para integrarlos en un solo commit" + Si vuelvo a hacer un reset --mixed a un commit de los que fueron encapsulados, se ignora/ + elimina el commit que encapsulaba estos. +`git reset --mixed [SHA commit]` +##### Hay q hacer el add y commit del cambio + +#### SOFT: + No afecta el working area? +`git reset --soft [SHA commit]` +##### Solo hay q hacer el commit para aplicar el cambio + +### CHECKOUT +##### "Ir a una version, deatached mode, permite generar una nueva rama(branch) a partir de este" +```git chekout [SHA commit] + + Te encuentras en estado 'detached HEAD'. Puedes revisar por aquí, hacer + cambios experimentales y hacer commits, y puedes descartar cualquier + commit que hayas hecho en este estado sin impactar a tu rama realizando + otro checkout. + + Si quieres crear una nueva rama para mantener los commits que has creado, + puedes hacerlo (ahora o después) usando -c con el comando checkout. Ejemplo: + **git switch -c ** + O deshacer la operación con: + **git switch -** +``` +##### Cada ***commit tiene un parent*** .. "de que 'punto' viene" + +## BRANCHES +##### linea alterna del repositorio + +#### Crear rama +``` +git branch "nombre_rama" + +# checkout -b crea la rama y posiciona en ese punto +git checkout -b "nombre_de_raiz_para_nueva_rama" +``` +#### Borrar rama +``` +git branch -d "rama" + -D (para forzar) +``` +##### al hacer el comit el head se posiciona en el top de la rama +`git commit -am "nuevo_commit"` +##### volver a la rama principal +`git checkout master` +##### Mover HEAD entre ramas +`git checkout "rama"` + +##### Omitir preparación archivo +git checkout -- "archivo" + +### FUSIONAR ramas +##### (fusiona desde la rama actual, debes posicionarte en master) +`git merge "rama"` + +#### SOLUCIONES de CONFLICTOS de FUSIONES: +##### -Fast-Forward -Manual Merge + + +### REBASE +##### (desde la rama a realizar rebase) +##### añade los comits de la ram experimental delante de la rama master +##### posterior al REBASE (master) sigue en su último anterior commit +``` +git rebase master +git checkout master +git merge "experimental" +``` +### LOG +#### Log STAT, explica con detalle nro. de lienas cambiadas +`git log --stat` + +#### Log con DIFF +`git log -p` + +#### Log por author +`git shortlog` + +#### otros +`git log -2 # ver los últimos 2 commits` + +#### filtros: +``` +git log --after="today" + --after="2020-12-07" + --after="2020-12-07" --before="today" + --author="nombre" + --grep="grep" -i (ignore Lower/Upper) +``` +##### Busqueda por contenido de archivos, muestra en que commit se creó +`log -S"búsqueda"` + +### Alias Log +``` +git config --global alias.lg "log --graph --abbrev-commit --decorate --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" + +git config --global alias.lg2 "log --graph --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all" +``` + +### Git stash +##### guarda cambios en un estado termporal, no aplica cambios inmediatamente +``` +git stash +git stash list +git stash aplply +``` +### Git fetch +`git help fetch` + +### Git diff +##### muestra las diferencias hasta el punto en el este desde el commit indicado +`git diff 'commit id' + +### Clonar Repositorio +`git clone [repos ssh o https]` + +### Llaves ssh +##### listar llaves +`ssh-add -l` +##### SSH -t (algoritmo=rsa) -b (bits key) -C "comentario/mail" +```ssh-keygen -t rsa -b 4096 -C "mail@git" + +$ eval $(ssh-agent -s) +> Agent pid 59566 + +ssh-add .ssh/[key_rsa] + +cat .ssh/[key_rsa.pub] +``` + +## Médotodos remotos tipícos (git-repos) + +### Clonar repositorio (o https): +``` +git clone ssh://gite@192.168.0.8/jp.av.dev/test_repo.git + + +"Creating a new repository on the command line" + +touch README.md +git init + +git add README.md +git commit -m "first commit" +git remote add origin sshUsr@host:RepoUsr/Repo.git +git push -u origin master +``` +### Ver y eliminar vinculo con repositorio remoto +``` +git remote -v +git remote rm origin + +"Pushing an existing repository from the command line" +" ssh " +git remote add origin gite@192.168.0.8:333/jp.av.dev/test_r.git +git push -u origin master + +" http " +git remote add origin http://192.168.0.8:3000/jp.av.dev/test_repo.git +``` + +## Git ignore +"Crear archivo .gitignore añadir archivo/carpeta/extension para ignorarlos +no guardar archivos sensibles, regex, ej. .*" + + +----- + + + +## 📌️ **Docs, Referencias...** + +* [All Commmands](https://git-scm.com/docs/git) +* [Git Reference](https://git-scm.com/docs) +* [PDF Cheat Sheet](https://education.github.com/git-cheat-sheet-education.pdf) +* [PDF Cheat Sheet 2](https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf) +* [Interactive Cheat Sheet](https://ndpsoftware.com/git-cheatsheet.html) \ No newline at end of file