当前位置:   article > 正文

Git多用户,不同项目配置不同Git账号_git不同项目不同上传账号

git不同项目不同上传账号

最近碰到一个比较麻烦的Git的应用场景:就是一台电脑上,可能有个git工程,每个工程的地址和账号密码又是不一样的,刚开始的就是要用那个工程了,就修改下全局的user.name,user.email,但是每次都是很麻烦,甚至会push错地方。

那么有没有办法可以在一台电脑上配置多个Git用户,不同的Push地址呢?经过查询和实验,发现是可以实现的。我就以Github来举例说明(服务器的地址都是github.com,也可以是不同的地址),如何配置多用户,多地址提交项目。首先假设有两个账号:一个Github的账号是A,另一个Github的账号是B

1. 配置多个Git用户

首先呢,我们要为不同的Github账号配置不同的Git账号

为A用户生成:

  1. $ git config user.name "A"
  2. $ git config user.email "A@hotmail.com"
  •  

注意:这里git config命令没有带—global,表示这是一个局部的设置,也就是这个用户是当前项目的,而不是全局的。

为B用户配置:

  1. $ git config user.name "B"
  2. $ git config user.email "B@gmail.com"
  •  

2. 为不同的用户生成SSH密钥

一般的Git服务器为了安全,都会需要我们提供一个安全的SSH密钥,默认情况下,生成密钥的文件名都是一样的,但是不同的用户,必须设置不同文件名的密钥文件,否则会发生覆盖。密钥生成后,添加到服务端(如Github)

为A用户生成SSH:

$ ssh-keygen -t rsa -C “A@hotmail.com”
  • 运行后,会然你输入存储密钥文件的地址和密码,自己决定就行,最好是用默认的路径,然后修改下密钥文件名,类似下面的:
  1. Enter passphrase (empty for no passphrase):
  2. Enter same passphrase again:
  3. Your identification has been saved in /c/Users/lange/.ssh/id_rsa.
  4. Your public key has been saved in /c/Users/lange/.ssh/github_id_rsa.pub.
  5. The key fingerprint is:
  6. SHA256:mRAluu98izlMRIQhaezphUvRHnkEH5HFm+aAX6wtXBU zlzsam@hotmail.com
  7. The key's randomart image is:
  8. +---[RSA 2048]----+
  9. | ..ooBB*o E. |
  10. | =.=o++. . |
  11. | o =.=o. + |
  12. | = +.o.Bo |
  13. | o o.+ OS |
  14. | o .* o |
  15. | o.. |
  16. | ooo. |
  17. | =o.. |
  18. +----[SHA256]-----+

为B用户生成SSH(同样的按A的步骤,唯一不同的是密钥文件名和账户密码的不同):

ssh-keygen -t rsa -C “B@gmail.com”

最后会生成四个文件,在我的电脑如下:

  1. -rw------- 1 lange staff 1679 12 18 21:13 id_rsa
  2. -rw-r--r-- 1 lange staff 407 12 18 21:13 id_rsa.pub
  3. -rw------- 1 lange staff 1766 1 4 21:55 lapisy_id_rsa
  4. -rw-r--r-- 1 lange staff 404 1 4 21:55 lapisy_id_rsa.pub

注意:这里使用邮箱地址来生成的,跟用户生成Git账号的邮箱保持一致

3. SSH多账户配置

在生成密钥的.ssh目录下,新建一个config文件,配置多账户规范,举个样例:

  1. #github ontheroadtomine@gmail.com
  2. host github.com #别名,随便定 后面配置地址有用
  3. Hostname github.com #要连接的服务器
  4. User ontheroadtomine #用户名
  5. IdentityFile ~/.ssh/id_rsa #密钥文件的地址,注意是私钥
  6. #github softgeek@163.com
  7. host lapisy #别名,随便定
  8. Hostname github.com
  9. User lapisy
  10. IdentityFile ~/.ssh/lapisy_id_rsa

4. 增加新的私钥

使用ssh的ssh-add命令将密钥添加到 ssh-agent 的高速缓存中,这样在当前会话中就不需要再次输入密码了 。

  1. $ ssh-agent bash
  2. //A账户的私钥
  3. $ ssh-add ~/.ssh/id_rsa
  4. //B账户的私钥
  5. $ ssh-add ~/.ssh/lapisy_id_rsa

添加完后,可以使用ssh-add来查看密钥列表

5. 修改push的地址

默认情况下,我们项目下的.git目录下,config文件的内容:

  1. [core]
  2. repositoryformatversion = 0
  3. filemode = true
  4. bare = false
  5. logallrefupdates = true
  6. ignorecase = true
  7. precomposeunicode = true
  8. [user]
  9. email = softgeek@163.com
  10. name = lapisy
  11. [remote "origin"]
  12. url = git@githu.com:Lapisy/RecyclerViewSample.git
  13. fetch = +refs/heads/*:refs/remotes/origin/*
  14. [branch "master"]
  15. remote = origin
  16. merge = refs/heads/master

其中的remore地址是url = git@githu.com:Lapisy/RecyclerViewSample.git,这时候,我们需要修改跟密钥对应的地址,上面在配置ssh时,为每个Hostname配置了一个host的别名,这时候,我们就不能使用原来的Hostname来提交了,要用别名来代替Hostname。如上面de

url = git@githu.com:Lapisy/RecyclerViewSample.git

需要修改成对应的

url = git@lapisy:Lapisy/RecyclerViewSample.git

然后就可以正常push了。

注意:在向Github push 工程时,可能会碰到一个Bug,提示:

  1. remote: error: GH007: Your push would publish a private email address.
  2. remote: You can make your email public or disable this protection by visiting:
  3. remote: http://github.com/settings/emails
  4. To lapisy:Lapisy/RecyclerViewSample.git
  5. ! [remote rejected] master -> master (push declined due to email privacy restrictions)
  6. error: failed to push some refs to 'git@lapisy:Lapisy/RecyclerViewSample.git'

这里需要到Github中去把邮箱设置成public,或者不让他阻止我们push,如下图: 
Git-github-email-setting.png

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/438683
推荐阅读
相关标签
  

闽ICP备14008679号