Eu assumo que isso deve ser possível em git , mas como eu não sou um especialista em git eu usaria em funções de shell. Em um sh -compatível (por exemplo, bash ) você pode escrever facilmente uma função chamada git que será invocada em vez do binário git (tenha cuidado ao usar o caminho completo para o binário dentro da função - ou command git em BASH - para evitar recursão indesejada):
function git () {
case "$1" in
"commit")
# do your stuff
/path/to/git ...
;;
*)
# call git binary with the same arguments
/path/to/git "$@"
;;
}
Você pode usar apenas o alias de comando ( alias ), mas as funções oferecem muito mais flexibilidade.
Quanto à conclusão, verifique a funcionalidade de conclusão do shell (por bash procurar por complete na página man) - certamente é possível fazê-lo funcionar e nem precisa ser muito complicado.