在没有设置user.email和user.name的情况下提交

我试图这样做

git commit --author='Paul Draper <my@email.org>' -m 'My commit message' 

但是我明白了

 *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. 

我可以设置这些,但我在一个共享的框中,我将不得不(以后)取消它们。

 git config user.name 'Paul Draper' git config user.email 'my@email.org' git commit -m 'My commit message' git config --unset user.name git config --unset user.email 

这是一个提交很多行!

有更短的路吗?

(在使用环境variables提示长版本之后,我想到了这一点 – git commit想要设置一个作者和一个提交者,而 – 作者只会覆盖前者。)

所有的git命令都会在动作动词之前使用-c参数来设置临时configuration数据,所以这就是完美的地方:

 git -c user.name='Paul Draper' -c user.email='my@email.org' commit -m '...' 

你可以在你的repo中编辑.git/config文件来添加下面的别名:

 [alias] paulcommit = -c user.name='Paul Draper' -c user.email='my@email.org' commit 

或者你可以通过命令行来做到这一点:

 git config alias.paulcommit "-c user.name='Paul Draper' -c user.email='my@email.org' commit" 

然后你可以这样做:

 git paulcommit -m "..." 

备注:

  • 然后,这个想法是为这个共享框的其他用户添加像jeancommitgeorgecommit等别名。
  • 您可以通过编辑个人.gitconfig或在添加别名时在命令行中添加--gloabl选项来将此别名添加到全局configuration中。
  • 别名paulcommit不是一个简短的,但它是冗长的,你可以在一般只键入git pau + tab