在我的~/。gitconfig,我列出我的个人电子邮件地址下[用户],因为这是我想用于Github回购。
但是,我最近也开始在工作中使用git。我公司的git回购允许我提交,但是当它发出新的变更集通知时,它说它们来自匿名,因为它不识别我的.gitconfig中的电子邮件地址——至少,这是我的理论。
是否可以在.gitconfig中指定多个[用户]定义?或者是否有其他方法覆盖特定目录的默认.gitconfig ?在我的情况下,我检查了~/worksrc/中的所有工作代码-是否有一种方法只为该目录(及其子目录)指定.gitconfig ?
Git别名(和Git配置中的部分)来拯救!
添加别名(从命令行):
git config --global alias.identity '! git config user.name "$(git config user.$1.name)"; git config user.email "$(git config user.$1.email)"; :'
然后,以集合为例
git config --global user.github.name "your github username"
git config --global user.github.email your@github.email
在一个新的或克隆的repo中,你可以运行这个命令:
git identity github
这个解决方案不是自动的,而是在全局~/中重置用户和电子邮件。Gitconfig和设置用户。useConfigOnly设为true将迫使git提醒你在每次新的或克隆的repo中手动设置它们。
git config --global --unset user.name
git config --global --unset user.email
git config --global user.useConfigOnly true
本地邮箱/邮箱/ bashrc
.bashrc_local:不要跟踪这个文件,只把它放在你的工作电脑上:
export GIT_AUTHOR_EMAIL='me@work.com'
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
.bashrc:跟踪这个文件,让它在工作电脑和家用电脑上都一样:
F="$HOME/.bashrc_local"
if [ -r "$F" ]; then
. "$F"
fi
我正在使用https://github.com/technicalpickles/homesick来同步我的dotfiles。
如果只有git配置可以接受环境变量:git配置中的Shell变量扩展
让git使用多个名称/电子邮件的另一个选项是通过别名git并使用-c标志来覆盖全局和特定于存储库的配置。
例如,通过定义别名:
alias git='/usr/bin/git -c user.name="Your name" -c user.email="name@example.com"'
要查看它是否有效,只需输入git config user.email:
$ git config user.email
name@example.com
你也可以在$PATH中放置一个自定义的git可执行文件,而不是一个别名。
#!/bin/sh
/usr/bin/git -c user.name="Your name" -c user.email="name@example.com" "$@"
这些方法相对于特定于存储库的.git/config的优点是,当自定义git程序处于活动状态时,它适用于每个git存储库。通过这种方式,您可以轻松地在用户/名称之间切换,而无需修改任何(共享的)配置。
也许这是一个简单的黑客,但它是有用的。只需生成如下所示的2个ssh密钥。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/GowthamSai/.ssh/id_rsa): work
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in damsn.
Your public key has been saved in damsn.pub.
The key fingerprint is:
SHA256:CrsKDJWVVek5GTCqmq8/8RnwvAo1G6UOmQFbzddcoAY GowthamSai@Gowtham-MacBook-Air.local
The key's randomart image is:
+---[RSA 4096]----+
|. .oEo+=o+. |
|.o o+o.o= |
|o o o.o. + |
| =.+ . = |
|= *+. S. |
|o*.++o . |
|=.oo.+. |
| +. +. |
|.o=+. |
+----[SHA256]-----+
同样的方法为个人创造一个。因此,您有两个ssh密钥,work和company。复制工作。酒吧,工作,个人。Pub, personal to ~/。ssh /目录。
然后使用以下代码创建一个shell脚本,并将其命名为crev.sh (Company Reverse),并包含以下内容。
cp ~/.ssh/work ~/.ssh/id_rsa
cp ~/.ssh/work.pub ~/.ssh/id_rsa.pub
以同样的方式,用以下内容创建一个名为prew .sh(个人反向)的文件。
cp ~/.ssh/personal ~/.ssh/id_rsa
cp ~/.ssh/personal.pub ~/.ssh/id_rsa.pub
在~ /。Bashrc为这些脚本添加别名如下所示
alias crev="sh ~/.ssh/crev.sh"
alias prev="sh ~/.ssh/prev.sh"
source ~/.bashrc
无论何时你想使用company,只要使用crev,如果你想使用personal,请使用prev:-p。
将这些ssh密钥添加到您的GitHub帐户。请确保之前没有生成id_rsa,因为这些脚本将覆盖id_rsa。如果您已经生成了id_rsa,请将其用于其中一个帐户。将它们复制为个人密钥,跳过生成个人密钥。