Eu gostaria de alias o seguinte comando git:
git commit --amend -m $(git log --format=%B -n1)
No entanto, se eu adicionar o seguinte aos meus .gitconfig
erros com "erro: opção desconhecida `format=%B'"
[alias]
amend = commit --amend -m $(git log --format=%B -n1)
Existe uma maneira de ter este comando como um alias? Se eu colocar o subcomando entre aspas simples, ele o trata como uma string:
[alias]
amend = commit --amend -m '$(git log --format=%B -n1)'
Executar isso usando git amend
resulta no último commit sendo renomeado para o literal: $(git log --format=%B -n1)
.
Eu não sei quase nada sobre
git
, mas eu sei que$( )
precisa de um shell que irá interpretá-lo. Os aliases git usuais são internos aogit
, eles não executam nenhum shell. Para definir um alias git que executa um comando arbitrário, você precisa do!
.Meus testes indicam que não preciso
!sh -c …
fazergit
rodar algo em um shell. Parece que o comando depois!
é executado desh
qualquer maneira. A nota emsh
$( )
deve estar entre aspas duplas .Usa isto:
As aspas duplas são escapadas para que (o exterior)
git
não as use. Você precisa deles para osh
.A resposta de @Kamil Maciorowski está correta, mas acabei de perceber que a funcionalidade que eu queria poderia ser alcançada executando:
Que pode ser facilmente alias usando: