likes
comments
collection
share

多环境git 配置

作者站长头像
站长
· 阅读数 6

生成 SSH 公钥

默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:

$ cd ~/.ssh
$ ls
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

如果已经生成密钥无需再更新,密钥可以对应多台 git 服务器。直接复制 id_dsa.pub 到 ssh key 中即可。 其中一个带有 .pub 扩展名。 .pub 文件是你的公钥,另一个则是与之对应的私钥。

自定义公钥匙名称

由于我们需要生成各个环境(gitlab、github) 的公钥,所以我们要自定义名称

 ssh-keygen -f ~/.ssh/customFileName -C "邮箱地址"
 // 例如
 ssh-keygen -f ~/.ssh/github_rsa -C "my.163.com"  // github 密钥公钥
 ssh-keygen -f ~/.ssh/gitlab_rsa -C "my.163.com"  // gitlab 密钥公钥

github、gitlab 添加公钥

将 ~/.ssh/github_rsa 和 ~/.ssh/gitlab_rsa 公钥复制后添加到github和gitlab中。

github 多环境git 配置 gitlab 多环境git 配置

根据域名定义使用不同的密钥

我们要有多份密钥管理需要在对应文件夹下新建config 文件 ~/.ssh/config 添加不同域名下使用的密钥

# gitlab
    Host 192.168.1.7
    HostName 192.168.1.7
    User git
    IdentityFile ~/.ssh/id_rsa.gitlab
# githab
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_rsa

git config

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:

  • /etc/gitconfig 文件:包含系统上每一个用户及他们仓库的通用配置。
  • ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。
  • 当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库。

我想为电脑上的不同项目设置不同的 git 用户信息配置,在 ~/.gitconfig 中添加配置如下:

[includeIf "gitdir:/Users/huifei/Documents/company/"]
    path = .gitconfig-work
[includeIf "gitdir:/Users/huifei/Documents/try/"]
    path = .gitconfig-self

可以看到,我工作的项目都放在 company 目录下,他们都是连接 gitlab,而 try 目录下都是连接 github 的。我将他们根据路径分别设置了 .gitconfig-work 和 .gitconfig-self 的配置。

# .gitconfig-work 
[user]
    name = gitlabname
    email = youremail
# .gitconfig-self
[user]
    name = githuabname
    email = youremail

触发时机

  • git commit

    • 会触发 ~/.gitconfig 配置,可以通过 git log 查看提交信息的用户信息。
    • 如果发现用户名不对可以重置用户信息: git commit --amend --reset-author

git push

  • 会读取 ~/.ssh/gitlab_rsa 的ssh key进行和服务器身份验证

参考

git config