Configuración de git
git config --global ui.color auto
git config --global user.name "Pepito Pérez"
git config --global user.email "pperez@mikasa.com"
git config --global alias.cl clone
git config --global alias.st "status -sb"
git config --global alias.last "log -1 --stat"
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %Cblue<%an>%Creset' --abbrev-commit --date=relative --all"
git config --global alias.dc "diff --cached"
# git config --global alias.ds "diff --staged"
git config --global alias.dh "diff HEAD"
git config --global alias.dp "diff --word-diff --unified=10"
git config --global alias.so "show --pretty='parent %Cred%p%Creset commit %Cred%h%Creset%C(yellow)%d%Creset%n%n%w(72,2,2)%s%n%n%w(72,0,0)%C(cyan)%an%Creset %Cgreen%ar%Creset'"
git config --global alias.unstage "reset HEAD --"
git config --global alias.ci commit
git config --global alias.ca "commit -a"
git config --global alias.cam "commit --all --message"
git config --global alias.ri "rebase -i"
git config --global alias.ria "rebase -i --autosquash"
git config --global alias.fix "commit --fixup"
git config --global alias.squ "commit --squash"
git config --global alias.cp cherry-pick
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.qm '!git checkout $1; git merge @{-1}'
git config http.proxy "http://usernm:pass@ipProxy:port"
git config --global core.pager 'less -RFX'
git diff --word-diff
git diff --word-diff --unified=10 # dp diff prose
git diff --patience # agrupa cambios
git diff --histogram
git config --global diff.algorithm histogram
git show head
git show head~2
git show head --pretty='parent %Cred%p%Creset commit %Cred%h%Creset%C(yellow)%d%Creset%n%n%w(72,2,2)%s%n%n%w(72,0,0)%C(cyan)%an%Creset %Cgreen%ar%Creset'
git config --global alias.so "show --pretty='parent %Cred%p%Creset commit %Cred%h%Creset%C(yellow)%d%Creset%n%n%w(72,2,2)%s%n%n%w(72,0,0)%C(cyan)%an%Creset %Cgreen%ar%Creset'"
git show head --no-patch
git show head --stat
git cat-file -p head # Raw show
git diff head~2..head
git diff head..head~2
git diff head~3:somefile.txt..head:somefile.txt # Compare one file between commits
- __A__tomic
- __C__onsistent
- __I__ncremental
- __D__ocumented
Atómico significa que es autocontenido y coherente, cambios relacionados deberían estar en un sólo commit, y en un commmit no debería haber cambios mezclados.
Consistente un commit debería dejar un código consistente y funcional.
Incremental deberían apilarse limpiamente unos sobre otros, así que el orden de los commits es muy importante.
Documentado el mensajea asociado a un commit es importantísimo. Debería tener un mensaje corto que sea un buen resumen. En general es mejor documentar el "por qué" y no el "cómo".
git add -p
git add -i
git diff --check
git config --global core.whitespace "blank-at-eol,blank-at-eof,tab-in-indent"
git rebase HEAD~2 --whitespace=fix
git stash save --keep-index --include-untracked "WIP"
git stash list
git stash apply
git stash pop
Verificar tus claves existentes:
ls -la ~/.ssh
También podemos comprobar que claves hemos añadido ya a nuestro agente ssh con:
ssh-add -l
Para generar una nueva pareja de claves ssh:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Podremos dar un nombre distintivo a los ficheros de claves generados y poner una contraseña adecuada a la clave. Si algún dia queremos cambiar la contraseña:
ssh-keygen -p
Añadimos nuestra clave al ssh-agent
ssh-add ~/.ssh/id_rsa
Ahora tenemos que añadir nuestra clave ssh en nuestra cuenta de github,
para ello editamos con nuestro editor de texto favorito el fichero
~/.ssh/id_rsa.pub
y copiamos el contenido integro. Después pegamos ese
contenido en el cuadro de texto de la web de github.
Para comprobar que las claves instaladas en github funcionan correctamente:
ssh -T git@github.com
Hi salvari! You've successfully authenticated, but GitHub does not provide shell access.
Este mensaje indica que todo ha ido bien.
Ahora en los repos donde queramos usar ssh debemos cambiar el remote:
git remote set-url origin git@github.com:$USER/$REPONAME.git