同一设备维护不同git项目

问题背景

当公司配的电脑和自己的一毛一样,那么自己的电脑基本就准备吃灰了,同时本来在自己电脑上有一些个人的项目也就懒得动了,电脑吃灰,项目吃灰……

突然! 有一天想起了自己维护的项目,但是切换两个电脑使用实际上除了高额的兴趣使然,基本是我也不知道怎么描述了。

反正啰嗦一堆就是我要用公司的电脑维护自己的项目,但是公司的git账户和我自己的git账户在一台电脑上我没法合理的使用了;
因为我配置的git肯定是公司的账户,但是我提交到自己的github上去是不行的!

那怼它!

取消git全局设置

根据众多网上的教程配置的 git 都是全局设置,比如:

1
2
git config --global user.name "your name"
git config --global user.email "your email"

这样没啥问题,但是这样我本机所有的git都会用这个帐号提交了;
但是这样不行,所以balabalabalabalabalabala我找到这个方法了;

首先用你熟悉的控制台cd到你的项目根目录下然后找到一个.git文件夹里面有个config文件打开看下,然后执行下列操作:

1
2
3
cd ~/you project # 进入项目文件夹
git config user.name "your_name" # 重新设置用户名
git config user.email "your_email" # 重新设置邮箱

这样就可以了,很简单吧;
其实这样只是在你当前的项目下重新配置了这个项目的git账户;
执行完之后可以打开当前项目的.git文件夹查看里面的config文件可以发现最后多了三行,类似下面这样

1
2
3
[user]
name = your name
email = your email

然后你再次提交的时候就可以了,当然如果有必要的话可以执行下列命令来取消全局的 git config 配置

1
2
git config --global --unset user.name
git config --global --unset user.email

然后下面是一些从其他地方摘过来的方法,如果有需要可以看下~
下文摘自

SSH配置

邮箱不同也会对应不同的SSH key,所以要针对不同的项目使用不同的key。
所以打开git全局配置文件。一般在用户目录下的.ssh文件夹中。比如windows用户就是:C:\Users\用户名\.ssh
Linux就是~/.ssh
找到config文件。没有就新建一个,用文本编辑器打开,添加如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
#第一个git项目账号
Host first #给这个项目服务器起个名字,待会用到
HostName test.com #这里需要用真实的项目检出hostname,为了项目安全,我这里随意写的
User A #用户名
IdentityFile ~/.ssh/id_rsa_first #该项目ssh key 所在路径
#第二个git项目账号 和上面的项目配置一样
Host second
HostName test2.com
Port 1334
User B
IdentityFile ~/.ssh/id_rsa_second

如果还没有生成ssh key 可以用一下命令生成,不同项目起不同名字或者放到不同路径,在上面的config配置中应用不同路径即可

1
ssh-keygen -C "your_email" -t rsa

使配置生效

上面配置了ssh key时候指定了host名称,所以再次打开项目文件夹下的.git目录下的config文件,修改url配置,把原来的host name url 改成你上面配置的host 值比如 ‘first’ 、’seceond’等,类似如下

1
2
3
[remote "origin"]
url = git@first:A/proxy.git
fetch = +refs/heads/*:refs/remotes/origin/*

也可以使用命令行完成配置。这里需要注意,使用.ssh目录下的host代替真实的hostname,这样才能让git识别出来

1
git remote add first git@first:A/project.git

如果使用的是repo,也是同样操作

1
repo init -u ssh://A@first -b branch

push的时候,push到对应的Host即可

1
git push fist master #first项目中:

感谢原作者分享,原文地址
侵删