aliases no GIT
December 29, 2025•456 words
Todos meus repos ficam em ~/GIT/ logo, tenho um alias para o seguinte comando:
for d in */.git; do (cd "${d%/.git}" && git pull); done
No ~/.zshrc
alias pullall='cd ~/GIT && for d in */.git; do (cd "${d%/.git}" && git pull); done'
Além dos aliases via zshrc ou bashrc, há o alias dentro da config do git:
git config --global alias.[nome-do-alias] [conteudo-do-alias]
Por exemplo:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.sw switch
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.cm "commit -m"
git config --global alias.ca "commit --amend"
git config --global alias.cane "commit --amend --no-edit"
git config --global alias.unstage "restore --staged"
git config --global alias.last "log -1 --stat"
git config --global alias.lg "log --graph --decorate --oneline --all"
git config --global alias.df diff
git config --global alias.dfs "diff --staged"
git config --global alias.fixup "commit --fixup"
git config --global alias.rb "rebase"
git config --global alias.rbi "rebase -i"
git config --global alias.rbc "rebase --continue"
git config --global alias.rba "rebase --abort"
git config --global alias.pf "push --force-with-lease"
git config --global alias.prune "fetch --prune --tags"
Aliases “power user” (subcomandos via !):
git config --global alias.wip "!f(){ git add -A && git commit -m 'WIP' ; }; f"
git config --global alias.undo "!f(){ git reset --soft HEAD~1; }; f"
git config --global alias.root "rev-parse --show-toplevel"
Sobre o meu alias pullall acima, usando o alias dentro do git fica:
set +H
git config --global alias.pall '!f(){ cd "$HOME/GIT" || exit 1; for d in */.git; do (cd "${d%/.git}" && git pull --ff-only); done; }; f'
set -H
para visualizar:
git config --global --get alias.pall
para não mexer em set +H, a alternativa é escrever no ~/.gitconfig manualmente:
[alias]
pall = !f(){ cd "$HOME/GIT" || exit 1; for d in */.git; do (cd "${d%/.git}" && git pull --ff-only); done; }; f
No arquivo já terá outras configs, só adicionar o alias:
[core]
editor = vim
[user]
name =
email =
signingkey =
[color]
ui = auto
[credential]
helper = cache --timeout=28800
[push]
default = simple
[commit]
gpgSign = true
[alias]
pall = !f(){ cd "$HOME/GIT" || exit 1; for d in */.git; do (cd "${d%/.git}" && git pull --ff-only); done; }; f
st = status
co = checkout
sw = switch
br = branch
ci = commit
cm = commit -m
ca = commit --amend
cane = commit --amend --no-edit
unstage = restore --staged
last = log -1 --stat
lg = log --graph --decorate --oneline --all
df = diff
dfs = diff --staged
fixup = commit --fixup
rb = rebase
rbi = rebase -i
rbc = rebase --continue
rba = rebase --abort
pf = push --force-with-lease
prune = fetch --prune --tags