DEV Community

João Rocha
João Rocha

Posted on

Atalhos no Git

Durante o trabalho utilizo o terminal para executar comandos do git, porém percebo que muitas vezes utilizo o mesmo comando repetidamente. Durante o Gitflow repetimos comandos git como checkout, status e log, para facilitar podemos utilizar apelidos (alias). Edite o arquivo ~/.gitconfig

A própria documentação do git fornece alguns apelidos básicos, vejamos:

st = status
br = branch
co = checkout
cm = commit
Enter fullscreen mode Exit fullscreen mode

Essa técnica se torna poderosa e útil, pois permite criar comandos um pouco mais complexos:

Retirar do stage um arquivo
    unstage = reset HEAD --
O log do último commit:
    last = log -1 HEAD
Log personalizado:
    lg = log --all --graph --decorate --oneline --abbrev-commit
Enter fullscreen mode Exit fullscreen mode

Podemos também adicionar comandos externos.

Chamada de um programa
    visual = !gitk
Push para a branch atual:
    current-branch = rev-parse --abbrev-ref HEAD
    push-to-current-branch = "!git push -u origin $(git current-branch);"
Enter fullscreen mode Exit fullscreen mode

Os comandos que vimos até agora apenas facilitam nossas tarefas mas não as automatizam. Seguindo o fluxo do gitflow, após commitar nossas mudanças na branch feature, temos que levar as mudanças para branch dev. Então vamos criar um comando chamado merge-and-push-to-dev-branch que facilitará esse processo.

Auxiliar:
    aux = "!f(){ git checkout dev && git pull && git merge \"$1\" && git push -u origin dev; }; f"
Merge da branch com dev:
    merge-and-push-to-dev-branch = "!git aux $(git current-branch)"
Enter fullscreen mode Exit fullscreen mode

O arquivo ~/.gitconfig da seguinte forma:

[user]
        email = email@email.com
        name = Seu Nome
[alias]
        st = status
        br = branch
        co = checkout
        cm = commit
        unstage = reset HEAD --
        visual = !gitk
        last = log -1 HEAD
        lg = log --all --graph --decorate --oneline --abbrev-commit
        current-branch = rev-parse --abbrev-ref HEAD
        push-to-current-branch = "!git push -u origin $(git current-branch);"
        aux = "!f(){ git checkout dev && git pull && git merge \"$1\" && git push -u origin dev; }; f"
        merge-and-push-to-dev-branch = "!git aux $(git current-branch)"

Enter fullscreen mode Exit fullscreen mode

Então você tem alguma dica? Algum processo que gostaria de ser automatizado?

Top comments (0)