如何让git使用给定项目的正确标识(名称和电子邮件)?

我使用我的个人笔记本电脑工作和个人项目,我想使用我的工作电子邮件地址我的工作提交(gitolite)和我个人的电子邮件地址(github)。

我阅读了以下全球性或临时性的解决scheme:

  • git config --global user.email "bob@example.com"
  • git config user.email "bob@example.com"
  • git commit --author "Bob <bob@example.com>"
  • 设置其中一个GIT_AUTHOR_EMAILGIT_COMMITTER_EMAILEMAIL环境variables

一个解决scheme是手动运行一个shell函数来设置我的环境工作个人 ,但我很确定,我会经常忘记切换到正确的身份导致在错误的身份提交。

有没有办法将某个存储库,项目名称等绑定到一个标识(名称,电子邮件)? 人们做什么?

git config user.email "bob@example.com"

做一个回购里面的一个将设置该回购,而不是全局configuration。

看起来就像你之后的事情,除非我误读你。

使用“.git”文件夹编辑configuration文件,以维护不同的用户名和电子邮件取决于存储库

  • 转到您的reposotory
  • 显示隐藏文件并转到“.git”文件夹
  • find“configuration”文件
  • 在EOF中添加下面的行

[用户]

名字=鲍勃

电子邮件= bob@example.com

以下命令显示为此存储库设置的用户名和电子邮件地址。

git config –get user.name

git config –get user.email

例如:对于我在D:\ workspace \ eclipse \ ipchat \ .git \ config中的configuration文件

这里ipchat是我的回购名称

您需要使用下面的本地设置命令:

本地设置

 git config user.email mahmoud@company.ccc git config user.name 'Mahmoud Zalt' 

当地得到

 git config --get user.email git config --get user.name 

本地configuration文件位于项目目录: .git/config

全球集

 git config --global user.email mahmoud@zalt.me git config --global user.name 'Mahmoud Zalt' 

全球得到

 git config --global --get user.email git config --global --get user.name 

在主目录中的全局configuration文件: ~/.gitconfig

请记住引用空白等,例如:“名字姓氏”

如果你使用git config user.email "foo@example.com" ,它将被绑定到当前你所在的项目。

这是我为我的项目做的。 我克隆/初始化回购时设置适当的身份。 这是不是傻瓜(如果你忘记和推动之前,你知道你被洗掉),但它是一样好,你可以得到没有能力说git config --global user.email 'ILLEGAL_VALUE'

其实,你可以做一个非法的价值。 设置你的git config --global user.name $(perl -e 'print "x"x968;')

然后,如果您忘记设置您的非全局值,您将收到一条错误消息。

[编辑]在一个不同的系统,我不得不增加到968的数量,以“致命的:不可能的长个人标识符”失败。 同一版本的git。 奇怪。

如果你不使用--global参数,它将只设置当前项目的variables。

从Git 2.13开始,你可以在你的gitconfig中使用includeIf来包含一个具有不同configuration的文件,这个configuration基于你运行git命令的仓库的path。

一旦我得到它自己的工作,我会更新一个更好的例子。

https://motowilliams.com/conditional-includes-for-git-config#disqus_thread

要使用Git 2.13,您需要添加PPA(Ubuntu / Debian)或下载二进制文件并安装(Windows /其他Linux)。