我想给以下 git 命令起别名:
git commit --amend -m $(git log --format=%B -n1)
但是,如果我将以下内容添加到我的.gitconfig
it 错误中,出现“错误:未知选项 `format=%B'”
[alias]
amend = commit --amend -m $(git log --format=%B -n1)
有没有办法将此命令作为别名?如果我将子命令放在单引号中,它会将其视为字符串:
[alias]
amend = commit --amend -m '$(git log --format=%B -n1)'
运行这个使用git amend
导致最后一次提交被重命名为文字:$(git log --format=%B -n1)
。
我几乎一无所知,
git
但我知道$( )
需要一个可以解释它的外壳。通常的 git 别名是内部的git
,它们不运行任何 shell。要定义运行任意命令的 git 别名,您需要!
.我的测试表明我不需要在 shell 中运行某些东西
!sh -c …
。git
似乎无论如何!
都运行了之后的命令。sh
注意 insh
$( )
应该是双引号。用这个:
双引号被转义,因此(外部)
git
不会用完它们。您需要它们用于sh
.@Kamil Maciorowski 的回答是正确的,但我刚刚意识到我想要的功能可以通过运行来实现:
可以使用以下方法轻松别名: