Estenda Git com comandos personalizados

Você pode estender e personalizar o git por meio de aliases de comando. Você também pode adicionar comandos totalmente novos.

Coloque qualquer executável com um nome como git-squashno seu PATHe o git o tornará automaticamente disponível como um subcomando.

Você pode então chamá-lo como qualquer outro gitcomando.

$ git squash 3

O gitexecutável coloca precedência com seus próprios comandos ls $(git --exec-path), a variável de ambiente GIT EXEC PATH e o $(gitexecdir)do git Makefile durante o tempo de construção / instalação, portanto, faça com que o nome do seu comando seja único. É assim que projetos como o git-flow estendem o git.

Acontece que gitfornece uma biblioteca de funções de shell expressamente para esse propósito, em $(git --exec-path)/git-sh-setup. Use-o em seus próprios scripts de shell, como:

source "$(git --exec-path)/git-sh-setup"

Depois disso, você terá acesso a um punhado de funções do shell que executam ações úteis e verificações de integridade ou fornecem acesso a gitinformações como métodos usagee práticas die.

Por exemplo:

git-squash

#!/bin/sh

source
"$(git --exec-path)/git-sh-setup"

USAGE
="COMMITS"
function _squash() {
if [[ $# == 1 ]]; then
if [[ -n $(git rev-parse --verify --quiet HEAD~$1) ]]; then
git rebase
-i HEAD~$1
else
die "HEAD~$1 does not exist"
fi
else
usage

fi
}

_squash $1

Na verdade, muitos dos executáveis ​​fornecidos com gitsão apenas scripts de shell, como git bisecte até git rebase.