aliases no GIT

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

More from >_
All posts