Podés ver el uso de git desde terminal en mi entrada del blog https://blog.cesarmansilla.com.ar/como-trabajar-con-git-desde-terminal/ o en Youtube https://www.youtube.com/watch?v=yg2yFySsUWM
- Configuración
- Archivos de Configuración
- Crear
- Cambios locales
- Buscar
- Historial de Commits
- Ramas & Etiquetas
- Actualizar & Publicar
- Fusionar & Rebasar
- Deshacer
$ git config --list
$ git config --local --list
$ git config --global --list
$ git config --system --list
$ git config --global user.name "[nombre apellido]"
$ git config --global user.email "[email-válido]"
$ git config --global color.ui auto
$ git config --global core.editor vi
<repo>/.git/config
~/.gitconfig
/etc/gitconfig
Existen dos maneras:
Vía SSH
$ git clone ssh://usuario@dominio.com/repo.git
Vía HTTP
$ git clone http://dominio.com/usuario/repo.git
$ git init
$ git status
$ git diff
$ git add .
$ git add -p <archivo>
$ git commit -a
$ git commit
$ git commit -m 'aquí el mensaje'
$ git commit -am 'aquí el mensaje'
git commit --date="`date --date='n day ago'`" -am "Mensaje del commit"
¡No modificar commits ya publicados!
$ git commit -a --amend
GIT_COMMITTER_DATE="date" git commit --amend
git commit --amend --date="date"
git stash
git checkout branch2
git stash pop
git stash apply
git stash drop
$ git grep "Hola"
$ git grep "Hola" v2.5
Mostrar todos los commits, empezando por los más recientes (se mostrará el hash, información sobre el autor, fecha y título del commit):
$ git log
$ git log --oneline
$ git log --author="usuario"
$ git log -p <archivo>
$ git log --oneline <origin/master>..<remote/master> --left-right
$ git blame <archivo>
$ git reflog show
$ git reflog delete
$ git branch
$ git branch -r
$ git checkout <rama>
$ git checkout -b <rama>
$ git branch <nueva-rama>
$ git branch --track <nueva-rama> <rama-remota>
$ git branch -d <rama>
¡Perderás los cambios sin fusionar!
$ git branch -D <branch>
$ git tag <tag-name>
$ git tag -a <etiqueta>
$ git remote -v
$ git remote show <remoto>
$ git remote add <remoto> <url>
$ git fetch <remoto>
$ git remote pull <remote> <url>
$ git pull origin master
git pull --rebase <remote> <branch>
$ git push remote <remoto> <rama>
$ git push <remoto> :<rama> (desde Git v1.5.0) ó $ git push <remoto> --delete <rama> (desde Git v1.7.0)
$ git push --tags
$ git merge <rama>
¡No rebasar commits ya publicados!
$ git rebase <rama>
$ git rebase --abort
$ git rebase --continue
$ git mergetool
Usar tu editor para manualmente resolver conflictos y (después de resueltos) marcar el archivo como resuelto:
$ git add <archivo-resuelto>
$ git rm <archivo-resuelto>
$ git rebase -i <commit-just-before-first>
Ahora reemplazando esto,
pick <commit_id>
pick <commit_id2>
pick <commit_id3>
con esto,
pick <commit_id>
squash <commit_id2>
squash <commit_id3>
$ git reset --hard HEAD
$ git reset HEAD
$ git checkout HEAD <archivo>
$ git revert <commit>
$ git reset --hard <commit>
$ git reset --hard <remote/branch> es decir, upstream/master, origin/my-feature
Reestablecer tu puntero HEAD a un commit anterior y preservar todos los cambios en el área de pruebas (stage area):
$ git reset <commit>
Reestablecer tu puntero HEAD a un commit anterior y preservar los cambios locales sin confirmar (uncommitted changes):
$ git reset --keep <commit>
Remover los archivos que fueron accidentalmente agregados al commit antes de ser añadidos al .gitignore:
$ git rm -r --cached .
$ git add .
$ git commit -m "remove xyz file"