2014-09-28 68 views
1

下面是一个演示我的问题的简单示例。如果我这样做:在Git别名中使用反引号命令执行

git commit -m "`date --utc`" 

它执行date --utc,并将结果放入提交消息中。

然而,当我别名它testcomit:

git config --global alias.testcommit 'commit -m "`date --utc`"' 

git testcommit不执行`date --utc`部分,它,而不是把它提交邮件中一字不差。

那么,如何获得这个别名来执行date --utc

+2

I * *觉得你可以用'混帐配置--global alias.testcommit“!混帐提交-m“$ (日期--utc)“''。诀窍是'!',它使整个别名成为一个shell命令(因此在那里是'git'),阅读更多[here](http://git-scm.com/docs/git-config)。 ('$()'而不是反引号是不相关的,但你应该开始使用它)。但是你确实知道提交的时间是默认存储的,所以没有理由把它放在消息中? – Biffen 2014-09-28 10:45:42

+0

@Biffen谢谢,让我试试看看它是否有效。我知道时间,这只是一个例子来证明问题。 – 2014-09-28 10:52:33

+0

@Biffen,太棒了!有效。请把它作为答案,我会接受它。 – 2014-09-28 10:55:27

回答

7

the documentation

如果别名膨胀与感叹号前缀,它会被当作外壳命令。

所以,你可以使用:

git config --global alias.testcommit '!git commit -m "$(date --utc)"' 

请注意,你必须把git在那里,因为你现在指定的是整个 shell命令。

$()而不是反引号是不相关的,但它是更好的,所以你应该开始使用它。)