如何在一台开发机器上拥有多个 git 帐户?

How can I have multiple git accounts on a single development machine?

我正在尝试在一台开发机器上同时处理多个(两个或三个)GitLab(甚至 GitHub)项目。因为在配置时,IDE 和 git 服务具有我的主要用户的数据,当我尝试使用不同的用户名/密码签出或克隆另一个项目时,系统说找不到项目或我没有权限这样做。

如何在一台开发机器上配置和使用多个 git 用户?

您可以配置每个存储库的用户详细信息。

git config user.name 'Your Name'
git config user.email 'name@example.com'

GitHub 可以配置为识别分配给电子邮件地址的多个 ssh 密钥,并在需要时向相应的地址发送电子邮件消息。

默认情况下,git 使用系统范围的配置文件或存储在主目录顶部的配置文件。

但您也可以在每个存储库中设置一个文件 .git/config,方法是手动编辑或使用 git config。在内部,您可以指定以下部分:

[user]
    name = Your name
    email = yourownemail@yourprovider.com

…

[credential "<your_project_hoster_url>"]
    username = <username to log in with>

您可以查看 git config in general or git credentials 以获取更多信息。

您可以在每个项目中使用存储您的凭据。

git config credential.helper store
git push origin HEAD
write user and password

转到项目文件夹并键入 git 命令。

如果您更喜欢 https 而不是 SSH 密钥解决方案,则以下内容在 Windows 上至少适用于 Github(并且与使用凭证管理器的 TortoiseGit 相关):

  1. 在您的本地存储库中(或克隆时),将远程(源)url 设置为
https://[yourusername]@github.com/[org]/[repo].git

(这里的重要部分是 您的用户名@github.com 因为这会在 Windows 凭据存储中创建一个 git:https://yourusername@github.com 条目来自包含所有“常规”远程 urls)

凭据的常规 git:https://github.com 条目

如果您想通过 repo/.git/config 文件为现有存储库编辑它,这类似于

[remote "origin"]
    url = https://[yourusername]@github.com/[org]/[repo].git
    fetch = +refs/heads/*:refs/remotes/origin/*
  1. 此外,在 repo/.git/config 文件中设置 credentialuser 属性,以便您的提交具有正确的作者:
[credential]
   username = [Github-Username]
[user]
   name = [Fullname]
   email = [Email Address]

在您的 git 远程操作(获取、推送等)中,系统会根据您的授权管理器要求您进行身份验证。

Git 多用户配置管理器 gum

安装

$ npm i -g @gauseen/gum

示例

$ gum list

Currently used name=gauseen email=gauseen@gmail.com
┌────────────┬─────────┬─────────────────────────┐
│ group-name │    name │                   email │
├────────────┼─────────┼─────────────────────────┤
│    global  │ gauseen │ gauseen@gmail.com       │
│    user1   │ li si   │ lisi@gmail.com          │
│    user2   │ wang er │ wanger@gmail.com        │
└────────────┴─────────┴─────────────────────────┘
$ gum use user1

Currently used name=li si email=lisi@gmail.com