edicion

jp.av.dev 2021-07-07 02:01:19 -04:00
parent 6823431e04
commit 5f3e37f4b1

@ -33,13 +33,14 @@ add-apt-repository ppa:git-core/ppa
```bash ```bash
git --version git --version
git config --global user.name "Nombre" git config --global user.name "nombre"
git config --global user.mail "Mail Git" git config --global user.mail "mail"
``` ```
```bash ```bash
# Lista de configuracion global # Lista de configuracion
git config --global --list git config --global --list
git config --local --list
# Ayuda # Ayuda
git help (comando) git help (comando)
@ -53,51 +54,55 @@ git add -A (Agregar todo a confirmacion)
# Remove a file from the workspace and the index # Remove a file from the workspace and the index
git rm file(s)... git rm file(s)...
git commit -m "mensaje"
git commit -m "Mensaje"
# add -A + Commit # add -A + Commit
git commit -am "Mensaje" git commit -am "mensaje"
git commit -m "--amend para sobreescribir el ultimo commit" --amend 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 ### Otros
`git status` ```sh
git status
`git log` git log
git config --global alias.[alias] "comando"`
`git config --global alias.[alias] "comando"` Alias git branches --list
```
`git branches --list`
## Git Reset ## Git Reset
#### RESET **RESET** : deja el proyecto en el stado del commit indicado
##### deja el proyecto en el stado del commit indicado * ***--hard***
##### ***--hard --mixed --soft*** * ***--mixed***
* ***--soft***
#### HARD: #### HARD:
##### Working Dir = Staging Area = Repository ***Working Dir = Staging Area = Repository***
`git reset --hard [SHA commit]` ```sh
git reset --hard [SHA commit]
```
#### MIXED: #### MIXED:
##### Staging Area = Repository. Working Dir a la espera de la iteracion basica (add, commit) ***Staging Area = Repository***
Sire para encapsular por ejemplo: restear 5 commits para integrarlos en un solo commit" Working Dir a la espera de la iteracion basica (add, 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.
Sirve para encapsular, por ejemplo: restear 5 commits para integrarlos en un solo commit
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: #### SOFT:
No afecta el working area? No afecta el working area?
`git reset --soft [SHA commit]` ```sh
##### Solo hay q hacer el commit para aplicar el cambio git reset --soft [SHA commit]
# solo hay q hacer el commit para aplicar el cambio
```
### CHECKOUT ### CHECKOUT
##### "Ir a una version, deatached mode, permite generar una nueva rama(branch) a partir de este" **Ir al modo 'deatached', permite generar una nueva rama(branch) a partir de este**
```bash ```bash
git chekout [SHA commit] 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, 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: puedes hacerlo (ahora o después) usando -c con el comando checkout. Ejemplo:
**git switch -c <nombre-de-nueva-rama>** git switch -c <nombre-de-nueva-rama>
O deshacer la operación con: 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 ## BRANCHES
------
##### linea alterna del repositorio **Ramas o Lineas alternativas del repositorio**
Ver ramas: `git branches --list` Ver ramas: `git branches --list`
@ -134,59 +138,66 @@ git branch -d "rama"
-D (para forzar) -D (para forzar)
``` ```
##### al hacer el comit el head se posiciona en el top de la rama ##### al hacer el comit el head se posiciona en el top de la rama
`git commit -am "nuevo_commit"` ```sh
##### volver a la rama principal git commit -am "nuevo_commit"
`git checkout master`
##### Mover HEAD entre ramas
`git checkout "rama"`
##### Omitir preparación archivo git checkout master # volver a la rama principal
`git checkout -- "archivo"`
### FUSIONAR ramas git checkout "rama" # mover HEAD entre ramas
##### (fusiona desde la rama actual, debes posicionarte en master)
# omitir preparación archivo
git checkout -- "archivo"
```
### Fusionar ramas / Merge
***(fusiona desde la rama actual, debes posicionarte en master)***
`git merge "rama"` `git merge "rama"`
#### SOLUCIONES de CONFLICTOS de FUSIONES: **SOLUCIONES de CONFLICTOS de FUSIONES:**
##### -Fast-Forward -Manual Merge * **-Fast-Forward**
* **-Manual Merge**
### REBASE ### REBASE
##### (desde la rama a realizar rebase) ***(desde la rama a realizar rebase)***
##### añade los comits de la rama experimental delante de la rama master Añade los comits de la rama experimental delante de la rama master,
##### posterior al REBASE (master) sigue en su último anterior commit posterior al REBASE (master) sigue en su último anterior commit
```bash ```bash
git rebase master git rebase master
git checkout master git checkout master
git merge "rama experimental" git merge "rama experimental"
``` ```
----
## LOG ## LOG
-----
#### Log STAT, explica con detalle nro. de lienas cambiadas **Log STAT** explica con detalle nro. de lineas cambiadas
`git log --stat` ```sh
git log --stat
#### Log con DIFF # log con DIFF
`git log -p` git log -p
#### Log por author # log por author
`git shortlog` git shortlog
#### otros # otros
`git log -2 # ver los últimos 2 commits` git log -2 # ver los últimos 2 commits
```
#### filtros: **Filtros**
```bash ```bash
git log --after="today" git log --after="today"
--after="2020-12-07" --after="2020-12-07"
--after="2020-12-07" --before="today" --after="2020-12-07" --before="today"
--author="nombre" --author="nombre"
--grep="grep" -i (ignore Lower/Upper) --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 ```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" 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 ### Git stash
##### guarda cambios en un estado termporal, no aplica cambios inmediatamente Guarda cambios en un estado temporal, no aplica los cambios inmediatamente
```bash ```bash
git stash git stash
git stash list git stash list
@ -204,21 +215,22 @@ git stash apply
`git help fetch` `git help fetch`
### Git diff ### Git diff
##### muestra las diferencias hasta el punto en el este desde el commit indicado Muestra las diferencias desde el commit indicado hasta el punto en el que se encuentra el head
`git diff 'commit id' `git diff 'commit id'`
### Clonar Repositorio ### Clonar Repositorio
`git clone [repos ssh o https]` `git clone [repos ssh o https]`
-----
## Llaves ssh ## 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 -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "john@example.com"
ssh-keygen -t rsa -b 4096 -C "mail@git" ssh-keygen -t rsa -b 4096 -C "mail@git"
@ -231,7 +243,7 @@ ssh-add .ssh/[key_rsa]
cat .ssh/[key_rsa.pub] cat .ssh/[key_rsa.pub]
``` ```
### Manejo de Identidades git ### Manejo de identidades ssh
- Configuracion por archivo **~/.ssh/config** - Configuracion por archivo **~/.ssh/config**
```bash ```bash
@ -250,55 +262,55 @@ cat .ssh/[key_rsa.pub]
```bash ```bash
git config --local user.name "fuzan" git config --local user.name "fuzan"
git config --local user.email "fuzan@email.net" 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 ## Médotodos remotos tipícos
### Clonar repositorio (o https): **Clonar** repositorio (ssh o https)
```sh ```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 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 ```bash
git remote -v git remote -v
git remote rm origin git remote rm origin
``` ```
### Crear nuevo repositorio remoto **Crear** nuevo repositorio remoto
```sh ```sh
touch README.md touch README.md
git init git init
#git config....
git add README.md git add README.md
git commit -m "first commit" git commit -m "first commit"
git remote add origin sshUsr@host:RepoUsr/Repo.git git remote add origin sshUsr@host:RepoUsr/Repo.git
git push -u origin master git push -u origin master
``` ```
### Push repo local a remota **Push** repo local a remota
**ssh** ```sh
`git remote add origin sshUsr@192.8.8.8:88/usrRepo/repo.git` # ssh
git remote add origin sshUsr@192.8.8.8:88/usrRepo/repo.git`
**https** # https
`git remote add origin https://url:3000/usrRepo/repo.git` git remote add origin https://url:3000/usrRepo/repo.git`
`git push -u origin master`
git push -u origin master
```
## Git ignore ## Git ignore
"Crear archivo .gitignore añadir archivo/carpeta/extension para ignorarlos Crear archivo **.gitignore**, añadir *archivo/carpeta/extension* para ignorarlos.
no guardar archivos sensibles, regex, ej. .*" Acepta regex, ej. **'*'**
```sh ```sh
ignorar_directorio/ ignorar_directorio/
dir2 dir2/
archivo_a_ignorar.txt archivo_a_ignorar.txt
archivo2 archivo2
*.pdf *.pdf