Win11 配置 Git 绑定 Github 账号的方法与问题汇总

目录

  • [一、创建 Github 项目库(远程仓库)](#一、创建 Github 项目库(远程仓库))
  • [二、配置安装好的 Git](#二、配置安装好的 Git)
    • [1. 设置用户信息](#1. 设置用户信息)
    • [2. 查看已配置的信息](#2. 查看已配置的信息)
    • [3. 建立本地仓库](#3. 建立本地仓库)
    • [4. Git 常用命令速查表](#4. Git 常用命令速查表)
  • [三、配置 SSH 公钥](#三、配置 SSH 公钥)
    • [1. 生成 ssh key](#1. 生成 ssh key)
    • [2. 启动 ssh-agent 并添加秘钥](#2. 启动 ssh-agent 并添加秘钥)
    • [3. 在 Github 上绑定 ssh 公钥](#3. 在 Github 上绑定 ssh 公钥)
  • [四、关联本地仓库与 Github 远程仓库](#四、关联本地仓库与 Github 远程仓库)
  • 五、其他
    • [1. 注意事项](#1. 注意事项)
    • [2. 创建 .config 或 .bashrc 后缀文件](#2. 创建 .config 或 .bashrc 后缀文件)
    • [3. 运行 ssh-add -l 失败](#3. 运行 ssh-add -l 失败)

默认已注册了 Github 且安装了 Git 。

一、创建 Github 项目库(远程仓库)

登录已创建好的 Github 账户,点击左上角的三条横杠,进入 Home 界面,如下图所示。然后点击绿色的 "New" 按钮,以创建新的项目库。

对创建的项目内容进行填写,例如:项目名称、项目描述、是否所有人均可查看等。最后点击 "Create repository" 即可创建项目。

完成创建项目库后,就需要让自己的电脑克隆一个刚刚创建的库(本地仓库),以方面自己电脑上的代码同步到在 GitHub 创建的库中,这时就需要用到 Git Bash 软件。

二、配置安装好的 Git

1. 设置用户信息

单击打开 Git Bash ,如下图所示:

输入如下命令验证 Git 是否安装成功,若显示版本号,例如 git version 2.x.x 则表示 Git 安装成功。

bash 复制代码
git --version

输入如下命令设置 Git 用户信息:

bash 复制代码
git config --global user.name "[用户名]"
git config --global user.email "[用户邮箱]"

下面的命令可以增强输出命令的可读性:

bash 复制代码
git config --global color.ui auto

注:这里的用户名最好与 GitHub 上的一致,而用户邮箱一定要是注册 GitHub 的那个邮箱地址。如何查看?在 Github 上登陆自己的账户,点击右上角的头像 → "Settings" ,进入设置界面,在左侧列表中选择 "Emails" ,即可查看用户名与用户邮箱(选择 Primary 的那个)。

2. 查看已配置的信息

输入如下命令查看用户信息:

bash 复制代码
git config --global user.name
git config --global user.email

或者

bash 复制代码
git config --list

3. 建立本地仓库

在任意位置创建一个空文件夹作为本地的 Git 仓库,进入该文件夹并右键,选择 "显示更多选项" → "Open Git Bash here" ,如下图所示。

执行以下命令生成 .git 文件。

bash 复制代码
git init
  • 初始化成功则会显示:Initialized empty Git repository in D:/git_warehouse/.git/ 的代码。

  • 输入 ll 指令可以查看仓库文件数量及详情,没有文件即显示:total 0 的代码。

  • 想在目录下显示 .git 隐藏文件,则点击 "查看" → "显示" → "隐藏的项目" 即可。

以下是 Git 仓库的工作流程图以及基本指令(包括添加到暂存区、提交到本地仓库、查看状态、查看提交日志等)

bash 复制代码
# 跟踪所有改动过的文件,即将所有修改提交到暂存区
git add .
bash 复制代码
# 将 README.md 提交到暂存区
git add README.md
bash 复制代码
# 提交所有更新过的文件至本地仓库,提交注释为:xxx
git commit -m "xxx"
bash 复制代码
# 以上命令执行完毕时,可以使用以下命令查看仓库文件的状态
git status
bash 复制代码
# 以上命令执行完毕时,可以查看日志(提交历史)
git log
bash 复制代码
# 撤销工作目录中所有未提交文件的修改内容,即将版本回退到之前提交的版本
git reset commitID --hard

4. Git 常用命令速查表

参考文章:【Git 常用命令速查表(图文+表格)

三、配置 SSH 公钥

1. 生成 ssh key

在 Git Bash 界面输入 cd ~/.sshls ~/.ssh/id_rsa.pub 命令,若返回 "no such file or directory" 则表明文件不存在,需要创建。输入以下命令创建文件并生成 ssh key :

bash 复制代码
ssh-keygen -t rsa -C "[用户邮箱]"

连续进行 3 次回车 Enter(确认)即可,然后会在 "C:/Users/[用户名]" 下生成一个 .ssh 文件,里面存储了两个秘钥,id_rsa 文件里存储的是私钥、 id_rsa.pub 文件里存储的是公钥。

用记事本打开 id_rsa.pub 文件,复制里面的内容;或者在 Git Bash 里输入 cat ~/.ssh/id_rsa.pub 命令复制公钥内容。

出现的问题

问题 :输入 ssh-keygen -t rsa -C "[用户邮箱]" 出现如下错误:

No such file or directory:没有这样的文件或目录

【问题原因】:本机用户名是中文,由于 Git Bash 的编码设置不支持中文,导致中文乱码,从而生成密钥失败。

【解决方法 1】(失败):修改 Git Bash 编码为 UTF-8 。以下为修改步骤:

  • 右键单击 Git Bash 的顶部边框,选择 "Options"

  • 在左侧列表选择 "Text" ,将 "Locale" 选为 "zh_CN" ,"Character set" 选为 "UTF-8" ,最后点击 "Save" 即可,如下图所示。

  • 重新尝试生成 ssh 密钥。

参考文章:【解决git生成ssh密钥失败问题,本机用户名中文乱码导致密钥生成失败。

【解决方法 2】(成功):方法 1 并没有解决问题,方法 2 是:通过快捷键 Win+R 打开命令提示符 cmd ,在 cmd 中生成 ssh 密钥,输入命令后连续进行 3 次回车即可。

生成的 id_rsa 和 id_rsa.pub 文件均在 .ssh 文件夹下。

2. 启动 ssh-agent 并添加秘钥

在 Git Bash 里输入如下命令:

bash 复制代码
eval $(ssh-agent -s)  
ssh-add ~/.ssh/id_rsa

3. 在 Github 上绑定 ssh 公钥

在 Github 上登陆自己的账户,点击右上角的头像,进入 Settings 界面,在左侧列表中选择 "SSH and GPG keys" ,如下图所示。然后点击右上方的 "New SSH key" 绿色按钮。

在如下所示的界面里填写信息,将公钥(id_rsa.pub)里的内容复制进去,最后点击 "Add SSH key" 即可成功添加。

回到 Git Bash 上验证是否配置成功,输入如下命令:

bash 复制代码
ssh -T [email protected]

如果出现:You've successfully authenticated, but GitHub does not provide shell access. 则说明绑定成功。若中间出现 (yes/no/[fingerprint]) 时,输入 yes 即可。

出现的问题

问题 1 :输入上述命令出现如下错误:

kex_exchange_identification:读取:软件导致连接中止

横幅交换:连接到 20.205.243.166 端口 22:软件导致连接中止

【解决方法】:Git Bash 下使用 SSH 连接出现 "Software caused connection abort" 问题

问题 2 :报错 "The authenticity of host 'github.com (20.205.243.166)' can't be established. "

【解决方法 1】:遇到 (yes/no/[fingerprint]) 时,直接输入 yes 即可。

【解决方法 2】:手动配置 known_hosts 文件,即在 C:/Users/[用户名]/.ssh 文件夹下新建一个 known_hosts 文件,用记事本打开该文件并写入 Github 的 ssh 密钥条目。

ssh 密钥条目如下所示:

bash 复制代码
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=

参考文章:【The authenticity of host 'github.com (20.205.243.166)' can't be established. 报错解决

四、关联本地仓库与 Github 远程仓库

1. 查看 Github 项目库地址

登陆你的 Github 账户进入项目仓库,如下图所示查看该 Github 项目库的地址(HTTPS or SSH 均可)。

了解两个常用的 Git 命令:push 和 pull 。

  • 如果本地仓库的代码有了更新,为了保持本地与远程的代码同步,我们就需要利用 git push origin master 命令把本地的代码 "推给" 远程的仓库。

  • 如果远程仓库的代码有了更新,同样为了保持本地与远程的代码同步,我们就需要利用 git pull origin master 命令把远程的代码 "拉到" 本地的仓库。

2. 对接本地仓库与远程仓库

1)远程仓库向本地仓库推送(克隆仓库)

将 Github 上的项目库克隆到本地电脑上,在本地仓库所在的文件夹下右键选择 "Open Git Bash here" 。

进入 Git Bash 后执行克隆命令:git clone <远程仓库地址>

如下图所示,指定目录已经存在在本地仓库的文件夹下。

2)本地仓库向远程仓库推送(上传代码)

在本地仓库所在的文件夹下右键选择 "Open Git Bash here" ,进入 Git Bash 后执行绑定命令:git remote add <远程仓库名称> <远程仓库地址> ,执行后就可以开始使用本地仓库向远程仓库推送了,输入 git remote 命令查看远程仓库名称。

打开刚刚克隆下来的 TEST 文件夹,在其中创建一个任意格式、任意名称的文件,例如:我在这里创建了一个名叫 text 的 .txt 文件。

在这个文件夹下右键选择 "Open Git Bash here" ,进入 Git Bash 。

  • 执行 git add text.txt 命令将该新文件上传至暂存区。

  • 执行 git commit -m "测试是否成功" 命令将所有更新过的文件提交至本地仓库,且提交注释为:"测试是否成功" ,引号内的内容相当于是上传文件的备注,便于查找。

  • 接着输入 push 指令 git push -u origin main ,将本地仓库的文件提交至远程仓库,如下图所示就代表上传成功了。
    注:红框内是什么,origin 后就跟什么。

打开 GitHub ,可以看到刚刚上传的文件。

注意

git push origin mastergit push -u origin mastergit push -f origin master 的区别主要在于是否设置了上游分支(upstream branch),以及是否强制推送。

  • git push origin master :

    • 这是最基本推送命令,仅把本地的 master 分支推送到远端的 origin 仓库对应的 master 分支,但不会建立本地分支和远端分支的 "跟踪关系" 。

    • 不设置上游分支,也就是说,以后如果直接运行 git push 或 git pull,Git 不知道默认跟踪哪个远端分支,可能会提示你指定分支。

  • git push -u origin master :推送并设置本地 master 与远程 master 上游关系

    • 除了推送 master 分支到远端 origin 仓库外,还会把本地 master 分支和远端 origin/master 关联起来(设置上游分支),设置本地 master 的上游分支为 origin/master 。

    • 以后可以仅用 git push 或 git pull,Git 会自动推送或拉取相对应的远端分支,更方便。

  • git push -f origin master :强制覆盖远程 master 分支

    • 这是强制推送(-f 是 --force 的简写)。作用是将本地的 master 分支强制推送到远程仓库,即使远程仓库的提交历史和本地不一致,也会覆盖远程的提交。

    • 这可能会覆盖或丢失远程分支上的历史,一般用于修正错误的提交或者重写历史。

    • 注意: 强制推送会导致别人基于远端分支的工作被破坏,使用时要非常小心,最好先确认没人正在用该分支。

总结:

命令 作用 说明
git push origin master 将本地 master 分支推送到远端 origin 的 master 不会设置上游分支,普通推送
git push -u origin master 推送 master 到 origin,同时设置上游分支 以后可直接用 git push 推送
git push -f origin master 强制推送本地 master 到 origin 的 master 不管远端历史,强制覆盖(慎用)

如果是第一次推送某个新的本地分支,建议使用 -u 参数,这样以后操作更方便。

五、其他

1. 注意事项

  • Windows Terminal 默认使用 PowerShell 或 cmd ,也可以安装并开启 Git Bash 终端更方便使用 Git 。

  • 如果想使用 HTTPS 而不是 SSH ,推送时会要求输入 GitHub 账号密码,GitHub 目前使用 Token 代替密码,需要额外配置。

2. 创建 .config 或 .bashrc 后缀文件

  • 在想要创建文件的文件夹下右击鼠标,新建一个 .txt 记事本,名字可以任意取。

  • 打开新建的 .txt 文本,将想要输入的内容粘贴进文本内。

  • 点击记事本左上角的 "文件" ,选择 "另存为" ,然后进行如下图所示的操作。

    注:重命名文件时,一定要带 .config 或 .bashrc 后缀,或者直接输入 .config 或 .bashrc 也行。

  • 此时,该文件夹下就出现了 CONFIG 文件或 Bash RC 源文件,将之前的 .txt 文本删除即可。

3. 运行 ssh-add -l 失败

【问题】:在 Git Bash 中输入 ssh-add -l 但收到 Could not open a connection to your authentication agent 的错误。

【原因】:这通常表明 SSH 代理没有运行或没有正确地被初始化。

【方法】:

  • 启动 SSH 代理:在 Git Bash 上运行 eval $(ssh-agent -s) 命令启动 SSH 代理,这将返回一个类似于 "Agent pid xxx" 的消息,表示 SSH 代理正在运行。

确保在每次打开 Git Bash 时启动 ssh-agent :将以下指令添加到你的 ~/.bashrc 文件中,然后运行 source ~/.bashrc 指令重新加载配置文件。

bash 复制代码
if [ -f ~/.bash_profile ]; then  
    . ~/.bash_profile  
fi

# Start SSH agent  
eval $(ssh-agent -s)
  • 添加 SSH 密钥:在 Git Bash 上运行 ssh-add ~/.ssh/id_rsa 命令将你的 SSH 密钥添加到代理中。

    注:需要根据你的密钥所处路径以及密钥文件名对上述命令做相应调整。

  • 验证 SSH 密钥:在添加密钥后,可以再次使用 ssh-add -l 验证是否成功添加,如果成功,会看到已添加的密钥列表,类似于 "xxx SHA256:... [你的邮箱] (RSA)" 。

参考文章:

Github入门教程,适合新手学习(非常详细)

Git的配置、本地绑定Github及基本使用

git与github账号绑定

将Git与Github进行SSH连接

相关推荐
L2ncE1 小时前
【LanTech】DeepWiki 101 —— 以后不用自己写README了
人工智能·程序员·github
柚个朵朵2 小时前
IDEA中使用Git
java·git·spring
我是哈哈hh2 小时前
【Git】初始Git及入门命令行
git·gitee·github·版本控制器
lifejump2 小时前
Git命令(Gitee)
git·gitee
极小狐2 小时前
如何创建并使用极狐GitLab 部署令牌?
运维·git·ssh·gitlab·github
小华同学ai4 小时前
牛!达摩院孵化开源项目,让数字人"活"起来:OpenAvatarChat教你轻松搭建自己的数字人
github
Justice link5 小时前
Git和Gitlab的部署和操作
git
极小狐5 小时前
极狐GitLab 的合并请求部件能干什么?
运维·git·安全·gitlab·极狐gitlab
vortex55 小时前
Git常用命令简明教程
git