1.删除GIT全局配置

查看是否进行过全局配置

1
git config --global --list

如果配置过,会出现

1
2
$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"

将其删除

1
2
$ git config --global --unset user.name "你的名字"
$ git config --global --unset user.email "你的邮箱"

2.生成新的SSH keys

(C:\Users\用户名\ .ssh)目录下,打开git-bash窗口

1
ssh-keygen -t rsa -C "邮箱"

使用不同邮箱生成两次,可以使用不同命名区分。

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/04_18/image_b49da3a934b0d859fdd1d2405d0ce0d5.png

打开 .pub文件(公钥),将内容全部配置到到github或其他平台中。

4.创建config文件

config,无文件扩展名。
文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
Host 别名
HostName github.com
IdentityFile ~/.ssh/ssh key的文件
PreferredAuthentications publickey
User github用户名

Host 别名
HostName github.com
IdentityFile ~/.ssh/ssh key的文件
PreferredAuthentications publickey
User github用户名

1
2
3
4
# Host : 每个Host要取一个别名,每个Host主要配置HostName和IdentityFile即可
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径

5.测试SSH key是否生效

依次验证

1
ssh -T git@配置的Host名

出现用户名即说明成功

要使用这些配置好的账号,您需要在 Git 操作中引用对应的主机别名。要为特定的 Git 仓库使用指定的 GitHub 账户进行操作,您可以在该仓库目录下执行以下 Git 命令,根据需要替换别名。

对于账户 user:
将远程仓库的URL从 github.com 改为 host别名:

git remote set-url origin git@host别名: …/…git

现在,当你执行诸如 git push、git pull 或 git clone 等操作时,Git 会根据您使用的 URL 中的主机别名,自动使用相对应的 SSH 密钥进行身份认证。这样您就可以方便地切换使用不同的 GitHub 账户了。

确保在您的本地 Git 配置(位于您的 Git 仓库的 .git/config 文件中)已正确设置远程仓库的 URL。这样一来,每当您与远程仓库交互时,Git 将自动使用为该主机别名配置的 SSH 密钥。

例如

1
2
3
4
5
6
7
8
9
10
11
Host name1
HostName github.com
IdentityFile ~/.ssh/name1
PreferredAuthentications publickey
User github_name1

Host name2
HostName github.com
IdentityFile ~/.ssh/name2
PreferredAuthentications publickey
User github_name2

当您配置了 SSH 别名来管理多个 GitHub 账户时,您会将原本的 git 操作命令中的默认 github.com 替换为您在 SSH 配置文件 (~/.ssh/config) 中定义的别名。以下是一些对照例子,展示了不使用别名和使用别名的 git 命令:

1. 克隆仓库

  • 不使用别名(原本):
    1
    git clone git@github.com:name/repository-name.git
  • 使用别名 ********
    1
    git clone git@********:name/repository-name.git

2. 推送更改到远程仓库

  • 不使用别名(原本):
    1
    git push origin master
  • 使用别名 ********(此命令前提是远程 origin 已设置为使用别名):
    1
    git push origin master

3. 拉取远程仓库的更改

  • 不使用别名(原本):
    1
    git pull origin master
  • 使用别名 ********(此命令前提是远程 origin 已设置为使用别名):
    1
    git pull origin master

4. 查看远程仓库细节

  • 不使用别名(原本):
    1
    git remote show origin
  • 使用别名 ********(此命令前提是远程 origin 已设置为使用别名):
    1
    git remote show origin

5. 设置远程仓库地址

  • 不使用别名(原本):
    1
    git remote set-url origin git@github.com:name/repository-name.git
  • 使用别名 ********
    1
    git remote set-url origin git@********:name/repository-name.git

请注意,一旦您为特定远程仓库设置了 URL,后续的所有 git 操作(如 pushpullfetch 等)都会沿用该配置,不需要再次指定 SSH 别名。别名的使用主要在于初次设置远程 URL 或更改现有远程 URL 时。

从本地创建一个新的 Git 仓库到上传代码到远程 GitHub 仓库的过程涉及到几个步骤及相应的 Git 命令。以下是完整的过程和每一步所需执行的命令:

  1. 初始化本地仓库:
    在项目的根目录下执行:

    cd /path/to/your/project
    git init

  2. 添加文件到暂存区:
    将项目文件添加到 Git 暂存区:

    git add .

    这里,.表示添加当前目录下的所有文件。也可以选择性地使用 git add 添加特定文件。

  3. 提交更改到本地仓库:
    将暂存区的更改提交到你的本地仓库:

    git commit -m “Initial commit”

    -m 后面跟的是提交信息,内容可以根据你的更改自定义。

  4. 连接到远程仓库:
    如果还没有远程仓库,需要先在 GitHub 创建一个仓库(不要初始化 README.md 或 .gitignore 文件),然后将本地仓库与远程仓库连接:

    git remote add origin <GITHUB_REPOSITORY_URL>

    把 <GITHUB_REPOSITORY_URL> 替换为你的 GitHub 仓库地址,例如:https://github.com/username/repository.git。

  5. 创建分支

    命令 git branch -M main 用于重命名 Git 仓库的当前分支为 main。此命令中 -M 选项告诉 Git 如果 main 分支已经存在,就强制重命名覆盖它。

    1
    git branch -M main
  6. 推送到 GitHub:
    将你的本地仓库的代码推送到远程仓库:

    git push -u origin main

    -u 参数指定默认上游分支,这样以后你可以只用 git push 来推送更改。如果你的默认分支名不是main(如 master或其他名字),请相应替换。

如果这是你第一次使用 Git,你还可能需要配置你的全局用户名和邮箱:

git config --global user.name “Your Name”
git config --global user.email “youremail@example.com

在推送的过程中可能会要求你输入 GitHub 的用户名和密码,如果启用了两步验证,则需要使用个人访问令牌作为密码。如果你使用 SSH 方式,会要求你输入 SSH 密钥的密码(如果设定了的话)。

一旦设置完毕,后续你只需在本地仓库进行更改后,使用 git add、git commit 和 git push 命令来上传新的更改即可。