Git在提交时指定用户和电子邮件?

时间:2012-11-27 19:54:17

标签: git

我们在测试服务器上创建了一个代码分支,多个用户正在通过SSH进入新服务器并使用命令行完成所有提交。但是,当然Git不知道谁在进行更改并提交它们,因此我们需要在提交期间指定作者。

我认为我们可以通过以下方式实现这一目标:

git commit -a -m 'removed temporary images' --author='deed02392 <foo@bar.net>'

但是这给了:

[test-branch 77b9357] removed temporary image 
    Author: deed02392 <foo@bar.net>
    Committer: root <root@vs123.(none)>
    Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

    git commit --amend --author='Your Name <you@example.com>'

 1 files changed, 0 insertions(+), 0 deletions(-)  delete mode 100644 derp.PNG

期望每个用户每次都更改配置似乎太过分了。这是因为Git不是为了让多个用户使用一个存储库吗?

2 个答案:

答案 0 :(得分:2)

只要所有用户使用不同的系统帐户,运行

 git config --global user.***

每个用户应该解决一次问题,即使所有用户都使用同一个repo, 因为这些设置是特定于用户的,并保存在$HOME/.gitconfig

(当然)如果他们在运行git之前su root或其他一些共享帐户,它将无效。

答案 1 :(得分:2)

创意1:看看this link, which shows how to use environment variables to define the author names etc.

Idea2: 例如,Github有一个通用的'git'用户,每个人都用它来推送对他们的存储库的更改,并且他们通过ssh密钥区分用户。你可以尝试那个方向,虽然我不确定它是否适用于你的设置,因为你直接在服务器上工作。

这些链接相关:this linkthis one。这是一个解释how gitolite does the ssh magic

的链接