我尝试像这样提交
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
这是一次提交的很多行!
有更短的路吗?
答案 0 :(得分:86)
(在使用环境变量建议长版本之后发生了这种情况 - git commit想要设置作者和提交者,而--author
仅覆盖前者。)
所有git命令在动作动词之前使用-c
参数来设置临时配置数据,因此这是完美的地方:
git -c user.name='Paul Draper' -c user.email='my@email.org' commit -m '...'
因此,在这种情况下,-c
是git
命令的一部分,而不是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 "..."
<强>说明:强>
jeancommit
,georgecommit
等别名。 .gitconfig
或在命令行中添加--global
选项将此别名添加到全局配置中。paulcommit
不是简短的,但它很详细,您通常只能键入git pau
+ 标签。答案 2 :(得分:0)
值得注意的是,Linux上的git将默认为/ etc / passwd中“ gecos”字段中给出的Linux用户名。您可以使用grep $(whoami) /etc/passwd | cut -d ':' -f 5
输出此名称。如果此字段为空,则不能在不设置用户名的情况下提交,但如果不为空,则git将使用它。因此,您将自己当成作者,将系统用户当成提交者。