%title: Git Tips&Tricks %author: David Antón %date: 2017-06-28
░░░░████████░░░░
░░███░░▓▓▓▓███░░
░░█░░░░▓▓▓▓░░█░░
░█░░░░▓▓▓▓▓▓░░█░
██░░░▓▓░░░░▓▓░██
█▓▓▓▓▓░░░░░░▓▓▓█
█▓░░▓▓░░░░░░▓▓▓█
█░░░░▓░░░░░░▓▓░█
█░░░░▓▓░░░░▓▓░░█
█▓░░▓▓▓▓▓▓▓▓▓░░█
█▓▓▓████████▓▓░█
░███░░█░░█░░███░
░░█░░░█░░█░░░█░░
░░█░░░░░░░░░░█░░
░░░█░░░░░░░░█░░░
░░░░████████░░░░
▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
▌ PRESH START ▐
▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
$> git clone <remote> <localDir>
$> git clone https://github.com/davidantonlou/gitLunchAndLearn.git
$> git remote
$> git remote show origin
$> git remote rename <old> <new>
$> git add <file/dir>
$> git commit -a -m "<mensaje>"
$> git push
echo uno >> test.txt
git add -A && git commit -m "1 el breikindance"
echo dos >> test.txt
git add -A && git commit -m "2 el crusaito"
echo tres >> test.txt
git add -A && git commit -m "3 el maiquelyason"
sed -i -e 's/dos/cuatro/g' test.txt
git add -A && git commit -m "4 el robocop"
echo cinco >> test.txt
git add -A && git commit -m "Baila chiqui-chiqui"
echo seis >> test.txt
git add -A && git commit -m "Lo bailan los heavys y también los frikis"
echo siete >> test.txt
git add -A && git commit -m "Perrea, perrea"
$> git pull
$> git fetch
$> git status
$> gitk
$> git diff
$> git log
$> git log --pretty
$> git log --author=daan
$> git log --help
▛▀▀▀▀▀▀▀▀▀▜
▌LEVEL UP!▐
▙▄▄▄▄▄▄▄▄▄▟
$> git branch
$> git branch <branchName>
$> git checkout <branchName>
$> git branch -D <branchName>
$> git stash list
$> git stash show
$> git stash drop
$> git stash pop
$> git ammend
$> git add <file>
$> git commit --amend
$> git push # Jejeje ERROR! :D hay que hacer force
$> git push --force # OJO! Acuérdate de lo que firmaste...
$> git tag 2.5
$> git tag 2.6 <commitHash>
$> git diff 2.5 2.6 # Compara el tag 2.6 con el 2.5
$> git branch <newBranch> 2.5 # Empezar un branch con el estado del tag 2.5
$> git log 2.5..2.6
▛▀▀▀▀▀▀▀▀▀▜
▌LEVEL UP!▐
▙▄▄▄▄▄▄▄▄▄▟
$> git reset <commitHash>
$> git reset origin/HEAD
$> git reset --hard origin/master # OJO! Yo no me hago responsable de lo que ocurra...
$> git revert <commitHash>
$> git revert HEAD~2..HEAD # Revert de los ultimos 2 commits
$> git merge <branchName>
$> git mergetool # Cuando el merge nos diga que tenemos conflictos
$> git rebase <branchName>
$> git rebase --continue # En caso de que existan conflictos
- Unifica las ramas dejando un árbol lineal simple.
- Rebase realiza un commit de menos.
- El rebase unifica las ramas perdiendo el historial de los commits.
- Además realiza el commit sin importar la cronología temporal en la que se han hecho los commits.
$> git merge --squash <branchName> # Similar a aplicar un parche que veremos más adelante
▛▀▀▀▀▀▀▀▀▀▜
▌LEVEL UP!▐
▙▄▄▄▄▄▄▄▄▄▟
$> git blame <fileName>
$> git clean -n # Muestra la información de limpieza de ficheros a borrar
$> git clean -f -d # OJO! Recuerda lo que firmaste! Elimina ficheros y directorios de manera forzada
$> git remote prune origin
$> git fetch -p
$> git cherry-pick <commitHash>
$> git bisect start # Búsqueda binaria
$> git bisect bad
$> git bisect good 2.5
$> git format-patch -2 HEAD --stdout > tmpPatch.patch
$> git flow <subcommand>
# Available subcommands are:
# init Initialize a new git repo with support for the branching model.
# feature Manage your feature branches.
# release Manage your release branches.
# hotfix Manage your hotfix branches.
# support Manage your support branches.
# version Shows version information.
▛▀▀▀▀▀▀▀▀▀▜
▌LEVEL UP!▐
▙▄▄▄▄▄▄▄▄▄▟
$> git help everyday
$> git ls-tree --name-only -r <commitHash>
$> git branch --merged master
$> git branch --merged master | grep -v '^\*' | xargs -n 1 git branch -d
$> git push origin --delete <remoteBranch>
$> git config --global alias.<handle> <command>
$> git config --global alias.co commit
$> git config color.ui true
$> git config merge.tool vimdiff
$> git config --list
$> git log --pretty=oneline --graph --decorate --all
$> git log Branch1 ^Branch2
$> git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/
▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
▌CHALLENGE COMPLETED▐
▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
▛▀▀▀▀▀▀▀▀▀▀▀▀▜
▌BONUS LEVEL!▐
▙▄▄▄▄▄▄▄▄▄▄▄▄▟
- Sourcetree
- Gitk
- Github desktop
- Gitkraken
- Tower
▛▀▀▀▀▀▀▀▀▀▀▀▀▜
▌ ? ▐
▙▄▄▄▄▄▄▄▄▄▄▄▄▟
Cada vez que usais Git desde IntelliJ muere un gatito