Git:为每个仓库设置不同的本地user.name和user.email

344

我目前正在处理两个项目,当我推送到这些项目时,它们期望我将本地的用户名和电子邮件配置为不同的数据。因此,我一直在更新我的配置文件,例如:

git config --local user.email "namelastname@domain.example"

由于它们是不同的存储库,是否有办法为每个存储库定义一个本地电子邮件?

也许在 .gitconfig 文件中?


2
repo = 所有分支,所有版本等等。所以当你说“因为有不同的分支......我能为每个repo定义电子邮件吗?”这没有意义。你想要什么:为每个repo定义不同的电子邮件设置?还是为每个分支定义不同的电子邮件? - gregory
对于其他人来到这里的人,请查看与此类似的另一个问题的答案,该答案基于文件夹结构+一个独立的.gitconfig文件,适用于该目录下的所有仓库。 - undefined
6个回答

624

只针对一个代码库,请进入相关的代码库目录并执行以下操作:

git config user.name "Your Name Here"
git config user.email your@email.example

对于(全球)默认电子邮件(这在您的~/.gitconfig文件中已配置):

git config --global user.name "Your Name Here"
git config --global user.email your@email.example

您可以使用以下命令检查Git设置:

git config user.name && git config user.email

如果您在特定的存储库中设置了新用户/配置(与全局不同),则应显示该本地配置,否则将显示您的全局配置。


67
如果有需要,你可以通过省略最后一部分来检查当前的设置,例如:git config user.email。 - Chris Owens
10
对我来说,这不起作用:如果我为仓库设置了不同的本地名称/电子邮件,则推送到源仍然会使用全局设置中的凭据 - 这正是我想避免的。 - Jens
2
@ChrisOwens 我编辑了答案,加入了你非常有用的评论。谢谢。 - James
2
@Jens 对我有帮助的是运行 git commit --amend --reset-author --no-edit,这将重置当前提交以使用本地配置(在运行上述命令后)。 - Rio Weber

19

您可以通过在终端上打印以下命令来确认:

  1. 全局用户:git config --global user.name
  2. 本地用户:git config user.name

17

或者只需编辑 .git\config 文件,并在某个地方添加这三行:

[user]
    name = YourName
    email = your@email.com

这是在每个仓库中吗? - Pure.Krome
@Pure.Krome 是和不是。你可以两种都做。将这个添加到每个仓库或者只在你的用户配置文件夹下的 .gitconfig 文件中添加一次(如果你使用的是Windows;我不知道Linux的位置)。 - t3chb0t

7
这可以通过以下命令实现:
    git config --local credential.helper ""
    git push origin master

这会要求提供当前仓库的用户名和密码。


6

通常我倾向于在公司项目和个人项目(在GitHub上)中使用不同的diff名称/电子邮件

在需要指定用户/电子邮件的git仓库中运行以下命令:

git config user.name <user-name>
git config user.email <user-email>

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接