diff --git a/Comandos-Basicos-Git.md b/Comandos-Basicos-Git.md index 1adac17..6eeb8c5 100644 --- a/Comandos-Basicos-Git.md +++ b/Comandos-Basicos-Git.md @@ -33,18 +33,19 @@ add-apt-repository ppa:git-core/ppa ```bash git --version -git config --global user.name "Nombre" -git config --global user.mail "Mail Git" +git config --global user.name "nombre" +git config --global user.mail "mail" ``` ```bash -# Lista de configuracion global +# Lista de configuracion git config --global --list +git config --local --list # Ayuda git help (comando) ``` -# Secuencia tipica de uso: +# Secuencia tipica de uso: ## Crear repositorio en directorio actual ```bash git init @@ -53,51 +54,55 @@ git add -A (Agregar todo a confirmacion) # Remove a file from the workspace and the index git rm file(s)... - -git commit -m "Mensaje" +git commit -m "mensaje" # add -A + Commit -git commit -am "Mensaje" - +git commit -am "mensaje" git commit -m "--amend para sobreescribir el ultimo commit" --amend ``` -##### HEAD ` indica el commint en el cual esta situado el puntero de git` +***HEAD*** : indica el commit en el cual esta situado el puntero de git ### Otros -`git status` - -`git log` - -`git config --global alias.[alias] "comando"` Alias - -`git branches --list` - +```sh +git status +git log +git config --global alias.[alias] "comando"` +git branches --list +``` ## Git Reset -#### RESET -##### deja el proyecto en el stado del commit indicado -##### ***--hard --mixed --soft*** +**RESET** : deja el proyecto en el stado del commit indicado +* ***--hard*** +* ***--mixed*** +* ***--soft*** #### HARD: -##### Working Dir = Staging Area = Repository -`git reset --hard [SHA commit]` +***Working Dir = Staging Area = Repository*** +```sh + 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]` -##### ~Despues de un cambio:~ add luego commit. +#### MIXED: +***Staging Area = Repository*** +Working Dir a la espera de la iteracion basica (add, commit) -#### SOFT: - No afecta el working area? -`git reset --soft [SHA commit]` -##### Solo hay q hacer el commit para aplicar el cambio +Sirve para encapsular, por ejemplo: restear 5 commits para integrarlos en un solo commit -### CHECKOUT -##### "Ir a una version, deatached mode, permite generar una nueva rama(branch) a partir de este" +Al realizar otro **reset --mixed** a un **commit** de los que fueron encapsulados, se ignora el commit que los encapsula. +```sh + git reset --mixed [SHA commit] + # despues de un cambio: add luego commit +``` +#### SOFT: + No afecta el working area? +```sh + git reset --soft [SHA commit] + # solo hay q hacer el commit para aplicar el cambio +``` + +### CHECKOUT +**Ir al modo 'deatached', permite generar una nueva rama(branch) a partir de este** ```bash git chekout [SHA commit] @@ -108,16 +113,15 @@ git commit -m "--amend para sobreescribir el ultimo commit" --amend 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 ** + git switch -c O deshacer la operación con: - **git switch -** + git switch - ``` -##### Cada ***commit tiene un parent*** .. "de que 'punto' viene" +***Cada commit tiene un parent*** .. de que 'punto' viene ## BRANCHES ------- -##### linea alterna del repositorio +**Ramas o Lineas alternativas del repositorio** Ver ramas: `git branches --list` @@ -134,59 +138,66 @@ 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"` +```sh +git commit -am "nuevo_commit" -##### Omitir preparación archivo -`git checkout -- "archivo"` +git checkout master # volver a la rama principal -### FUSIONAR ramas -##### (fusiona desde la rama actual, debes posicionarte en master) +git checkout "rama" # mover HEAD entre ramas + +# omitir preparación archivo +git checkout -- "archivo" + +``` + +### Fusionar ramas / Merge +***(fusiona desde la rama actual, debes posicionarte en master)*** `git merge "rama"` -#### SOLUCIONES de CONFLICTOS de FUSIONES: -##### -Fast-Forward -Manual Merge +**SOLUCIONES de CONFLICTOS de FUSIONES:** +* **-Fast-Forward** +* **-Manual Merge** ### REBASE -##### (desde la rama a realizar rebase) -##### añade los comits de la rama experimental delante de la rama master -##### posterior al REBASE (master) sigue en su último anterior commit +***(desde la rama a realizar rebase)*** +Añade los comits de la rama experimental delante de la rama master, +posterior al REBASE (master) sigue en su último anterior commit ```bash git rebase master git checkout master git merge "rama experimental" +``` +---- + +## LOG + +**Log STAT** explica con detalle nro. de lineas cambiadas +```sh +git log --stat + +# log con DIFF +git log -p + +# log por author +git shortlog + +# otros +git log -2 # ver los últimos 2 commits ``` -## 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: +**Filtros** ```bash 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 +# busqueda por contenido de archivos +# muestra en que commit se creó +git log -S"búsqueda" +``` +#### Log personalizado y alias ```bash 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" @@ -194,7 +205,7 @@ git config --global alias.lg2 "log --graph --decorate --format=format:'%C(bold b ``` ### Git stash -##### guarda cambios en un estado termporal, no aplica cambios inmediatamente +Guarda cambios en un estado temporal, no aplica los cambios inmediatamente ```bash git stash git stash list @@ -204,21 +215,22 @@ git stash apply `git help fetch` ### Git diff -##### muestra las diferencias hasta el punto en el este desde el commit indicado -`git diff 'commit id' +Muestra las diferencias desde el commit indicado hasta el punto en el que se encuentra el head +`git diff 'commit id'` ### Clonar Repositorio `git clone [repos ssh o https]` +----- + ## Llaves ssh ------- +```sh +# listar llaves +ssh-add -l +# crear llave +ssh-keygen -t (algoritmo=rsa) -b (bits key) -C "comentario/mail" -##### Listar llaves -`ssh-add -l` -##### Crear una llave -##### SSH -t (algoritmo=rsa) -b (bits key) -C "comentario/mail" -```bash ssh-keygen -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "john@example.com" ssh-keygen -t rsa -b 4096 -C "mail@git" @@ -231,7 +243,7 @@ ssh-add .ssh/[key_rsa] cat .ssh/[key_rsa.pub] ``` -### Manejo de Identidades git +### Manejo de identidades ssh - Configuracion por archivo **~/.ssh/config** ```bash @@ -250,55 +262,55 @@ cat .ssh/[key_rsa.pub] ```bash git config --local user.name "fuzan" git config --local user.email "fuzan@email.net" - git config --local core.sshCommand "ssh -i ~/.ssh/keys/id_rsa -F /dev/null" + + # Especificar llave + #..."From Git version 2.10.0, you can configure this per repo or globally, + # so you don't have to set the environment variable."... + git config --local core.sshCommand "ssh -i ~/.ssh/id_rsa_example -F /dev/null" ``` ## Médotodos remotos tipícos -### Clonar repositorio (o https): +**Clonar** repositorio (ssh o https) ```sh -# Opcion para escificar llave -#..."From Git version 2.10.0, you can configure this per repo or globally, -# so you don't have to set the environment variable."... - -git config --local core.sshCommand "ssh -i ~/.ssh/id_rsa_example -F /dev/null" - git clone ssh://sshUsr@domino/usrRepo/Repo.git +git clone https://dominio/usrRepo/Repo.git ``` -### Ver y eliminar vinculo con repositorio remoto +**Ver y eliminar vinculo** con repositorio remoto ```bash git remote -v git remote rm origin ``` -### Crear nuevo repositorio remoto +**Crear** nuevo repositorio remoto ```sh touch README.md git init - +#git config.... git add README.md git commit -m "first commit" git remote add origin sshUsr@host:RepoUsr/Repo.git git push -u origin master ``` -### Push repo local a remota -**ssh** - `git remote add origin sshUsr@192.8.8.8:88/usrRepo/repo.git` +**Push** repo local a remota +```sh +# ssh +git remote add origin sshUsr@192.8.8.8:88/usrRepo/repo.git` -**https** - `git remote add origin https://url:3000/usrRepo/repo.git` - -`git push -u origin master` +# https +git remote add origin https://url:3000/usrRepo/repo.git` +git push -u origin master +``` ## Git ignore -"Crear archivo .gitignore añadir archivo/carpeta/extension para ignorarlos -no guardar archivos sensibles, regex, ej. .*" +Crear archivo **.gitignore**, añadir *archivo/carpeta/extension* para ignorarlos. +Acepta regex, ej. **'*'** ```sh ignorar_directorio/ -dir2 +dir2/ archivo_a_ignorar.txt archivo2 *.pdf