无需设置user.email和user.name即可提交

时间:2014-02-27 02:49:22

标签: git

我尝试像这样提交

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

这是一次提交的很多行!

有更短的路吗?

3 个答案:

答案 0 :(得分:86)

(在使用环境变量建议长版本之后发生了这种情况 - git commit想要设置作者和提交者,而--author仅覆盖前者。)

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

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

因此,在这种情况下,-cgit命令的一部分,而不是commit子命令。

答案 1 :(得分:9)

您可以编辑回购邮件中的.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或在命令行中添加--global选项将此别名添加到全局配置中。
  • 别名paulcommit不是简短的,但它很详细,您通常只能键入git pau + 标签

答案 2 :(得分:0)

值得注意的是,Linux上的git将默认为/ etc / passwd中“ gecos”字段中给出的Linux用户名。您可以使用grep $(whoami) /etc/passwd | cut -d ':' -f 5输出此名称。如果此字段为空,则不能在不设置用户名的情况下提交,但如果不为空,则git将使用它。因此,您将自己当成作者,将系统用户当成提交者。

请参见https://github.com/git/git/blob/master/ident.c