git多账号间的切换

这篇博客介绍了如何在使用Git时,通过配置不同的用户名和邮箱以及SSH密钥,实现在Gitlab和Github账户间的无缝切换。详细步骤包括生成SSH密钥、添加密钥到GitHub/Gitlab以及解决多用户权限问题。同时,提供了通过ssh-agent管理多个SSH密钥的方法,以及使用SourceTree工具作为另一种解决方案。
摘要由CSDN通过智能技术生成

一、应用场景:

        公司使用的gitlab账号和自己的github账号需要来回切换

二、连接方式:

https方式:

        通过用户名和邮箱进行切换

git config --global user.name "YOURUSERNAME" 
git config --global user.email "YOUREMAIL"

        切换后需要清除本地缓存,如windows里缓存的凭据。

ssh方式:

        使用ssh方式则需要通过切换秘钥来实现。

        1.执行以下命令生成秘钥:

ssh-keygen -t rsa -C "这里换上你的邮箱"

        执行命令后需要进行3次或4次确认:

            1.确认秘钥的保存路径(如果不需要改路径则直接回车);

            注意:当需要在本地生成两个不同的秘钥,就要修改这里的路径,如第一个为/c/users/id_rsa,第二个为/c/users/id_rsa2
            2.创建密码(如果不需要密码则直接回车);
            3.确认密码;

2.接着,将生成的秘钥文件id_rsa.pub的内容拷贝到gitHub或者gitlab中的SSH key里:

3.通过以下命令测试是否成功连接

$ ssh -T git@github.com

        多用户时出现权限问题的原因:

        github使用SSH与客户端连接。当本地有两个秘钥,始终会用默认的第一个秘钥进行连接,导致无权限访问。

三、解决方法

    1.查看系统ssh-key代理:

$ ssh-add -l

        (1)如果系统未添加有代理,则出现下面提示:

        那就可以直接按步骤2进行添加新的代理

        (2)如果系统有代理,可能是之前添加的,可以执行一下命令进行删除:

$ ssh-add -D

        单个删除的方法:

$ ssh-add -d ~/.ssh/id_xxx.pub

   2. 依次将不同的ssh添加代理,执行命令如下:

$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/id_rsa2

如果出现以下报错,则需要运行下该命令 ssh-agent bash

Could not open a connection to your authentication agent.

四、其他方法

也可以使用sourcetree工具来对每一个本地仓库使用不同的git账号来登录。用sourcetree打开一个仓库后,点击设置,在设置中单独对该仓库设置对应的远程仓库git账号

Git切换账号和强制推送是两个常见的操作,分别用于不同的场景。以下是详细的步骤和说明: ### Git 切换账号 1. **生成 SSH 密钥对**:为每个 GitHub 账户生成不同的 SSH 密钥对。打开终端或命令提示符,输入以下命令生成 SSH 密钥对: ```bash ssh-keygen -t rsa -C "your_email@example.com" ``` 按照提示一路回车即可生成密钥。这将在你的用户目录下生成一个名为 `.ssh` 的隐藏文件夹,里面包含了公钥(以 `.pub` 为后缀)和私钥(没有后缀)。 2. **添加 SSH 密钥到 GitHub 账户**:登录你的 GitHub 账户,点击右上角头像打开菜单,选择 `Settings`。然后在左侧菜单中选择 `SSH and GPG keys`。点击 `New SSH key` 按钮,在 `Title` 字段中可以自定义一个标识该密钥的名称,将生成的公钥内容复制到 `Key` 字段中。最后点击 `Add SSH key` 按钮完成添加。 3. **配置本地 Git**:现在,我们需要配置本地 Git 告诉它使用哪个密钥对来推送代码。在终端或命令提示符中输入以下命令: ```bash git config --global user.name "Your Name" git config --global user.email "your_email@example.com" git config --global core.sshCommand "ssh -i ~/.ssh/your_private_key" ``` 将 `Your Name` 和 `your_email@example.com` 替换为你的 GitHub 账户对应的用户名和注册邮箱;将 `your_private_key` 替换为你生成的私钥文件名(不包含路径)。 4. **尝试推送代码**:现在可以尝试推送代码到你的 GitHub 账户中的仓库。在终端或命令提示符下,进入你的代码仓库目录,执行以下命令: ```bash git add . git commit -m "Commit message" git push origin master ``` 如果一切配置正确,代码将会被推送到你的 GitHub 账户对应的仓库中。 5. **切换到其他用户**:如果你想切换到其他 GitHub 账户推送代码,重复步骤1-4即可。每个 GitHub 账户都需要生成一个独立的 SSH 密钥对,并在 GitHub 账户和本地 Git 中配置对应的密钥。 ### Git 强制推送 1. **准备更改并提交到本地分支**:在本地仓库进行一些更改并提交到本地分支上: ```bash echo "new content" > myfile.txt git add myfile.txt git commit -m "Add new content" ``` 2. **强制推送到远程仓库**:由于某些原因无法正常推送时,可以使用强制推送来覆盖远程分支上的内容。使用以下命令: ```bash git push --force origin master ``` 这会强制覆盖远程仓库中的 `master` 分支内容。 3. **注意事项**:强制推送是一个危险的操作,因为它会覆盖远程仓库的历史记录。在使用前,请确保你了解可能导致的影响,并确认没有其他开发者在远程分支上工作。尽量避免在团队协作中使用强制推送,以免破坏其他成员的工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值