当前位置: 首页 > news >正文

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

目录

  • 一、创建 Github 项目库(远程仓库)
  • 二、配置安装好的 Git
    • 1. 设置用户信息
    • 2. 查看已配置的信息
    • 3. 建立本地仓库
    • 4. Git 常用命令速查表
  • 三、配置 SSH 公钥
    • 1. 生成 ssh key
      • 出现的问题
    • 2. 启动 ssh-agent 并添加秘钥
    • 3. 在 Github 上绑定 ssh 公钥
      • 出现的问题
  • 四、关联本地仓库与 Github 远程仓库
    • 1. 查看 Github 项目库地址
    • 2. 对接本地仓库与远程仓库
      • 1)远程仓库向本地仓库推送(克隆仓库)
      • 2)本地仓库向远程仓库推送(上传代码)
  • 五、其他
    • 1. 注意事项
    • 2. 创建 .config 或 .bashrc 后缀文件
    • 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 安装成功。

git --version

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

git config --global user.name "[用户名]"
git config --global user.email "[用户邮箱]"

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

git config --global color.ui auto

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

2. 查看已配置的信息

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

git config --global user.name
git config --global user.email

或者

git config --list

3. 建立本地仓库

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

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

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

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

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

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

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

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 里输入如下命令:

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 上验证是否配置成功,输入如下命令:

ssh -T git@github.com

如果出现: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 密钥条目如下所示:

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 master 的区别主要在于是否设置了上游分支(upstream branch)。

  • git push origin master :

    • 仅把本地的 master 分支推送到远端的 origin 仓库对应的 master 分支。

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

  • git push -u origin master :

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

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

总结:

命令作用
git push origin master推送本地 master 到 origin/master,但不设置上游分支
git push -u 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 指令重新加载配置文件。

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连接】

相关文章:

  • flask返回文件的同时返回其他参数
  • 【密码学——基础理论与应用】李子臣编著 第七章 公钥密码 课后习题
  • ubuntu扩展逻辑卷并调整文件系统大小步骤
  • “RS232转Profinet,开启“变频器工业版绝绝子!”
  • Step1X-Edit: A practical framework for general image editing
  • 28-29【动手学深度学习】批量归一化 + ResNet
  • 《深入浅出Git:从版本控制原理到高效协作实战》​
  • uniapp-商城-42-shop 后台管理 分包
  • VRRP与BFD在冗余设计中的核心区别:从“备用网关”到“毫秒级故障检测”
  • [ACTF2020 新生赛]Upload
  • 大模型API密钥的环境变量配置(大模型API KEY管理)(将密钥存储在环境变量)(python-dotenv)(密钥管理)
  • 编译原理实验 之 Tiny C语言编译程序实验 语法分析
  • 李臻20242817_安全文件传输系统项目报告_第9周
  • w~嵌入式C语言~合集4
  • flask uri 怎么统一加前缀
  • 【Web API系列】深入解析 Web Service Worker 中的 WindowClient 接口:原理、实践与进阶应用
  • Spring框架的ObjectProvider用法
  • C#通过NTP服务器获取NTP时间
  • 鸿蒙版电影app设计开发
  • 鸿蒙NEXT开发正则工具类(ArkTs)
  • 普京发表声明感谢协助俄军收复库尔斯克州的朝鲜军人
  • 又一名90后干部被查,已有多人倒在乡镇领导岗位上
  • 观察|动力电池步入“多核时代”,宁德时代新技术密集开箱有何启示
  • 中国建设银行原党委委员、副行长章更生严重违纪违法被开除党籍
  • 高明士︱纪念坚苦卓绝的王寿南先生
  • 青岛:今年计划新增城镇住房约5.77万套,推动房地产市场回稳