一、添加ssh公钥

1.使用git bash命令窗口

2.查看git用户以及邮箱配置

(1)查看当前仓库的本地配置(仓库级配置)

git config --local --list

(2)查看全局配置(用户级配置)

git config --global --list

       这些配置对当前用户的所有 Git 仓库有效,存储在用户目录下(Windows 通常是 C:\Users\你的用户名\.gitconfig,Linux/macOS 是 ~/.gitconfig

补充1:

查看所有配置(合并显示)

如果想一次性查看所有级别的配置(系统级 + 全局级 + 仓库级,优先级:仓库级 > 全局级 > 系统级),可以直接用:

git config --list

常用配置项说明

查看时可能会看到这些关键配置(如果设置过的话):

  • user.name:你的 Git 用户名
  • user.email:你的 Git 邮箱(通常与 SSH 密钥的邮箱一致)
  • remote.origin.url:当前仓库的远程仓库地址(如 SSH 地址 git@github.com:xxx/xxx.git 或 HTTPS 地址)
  • core.editor:Git 默认使用的编辑器

如果需要修改配置(例如设置用户名 / 邮箱),可以用 git config --global user.name "你的名字"  或 git config --global user.email "新邮箱" 这类命令。

3.生成 SSH 密钥对

输入以下命令(推荐使用更安全的 ed25519 算法,若系统不支持则用 rsa):

方法 1:推荐的 ed25519 算法(更安全)

ssh-keygen -t ed25519 -C "你的邮箱地址"

方法 2:兼容旧系统的 RSA 算法

如果执行上面的命令提示不支持 ed25519,改用 RSA 算法:

ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"

注意:-C 后面的邮箱建议与你的 Git 配置邮箱一致(可通过 git config user.email 查看),方便识别密钥用途。

4.找到你的ssh的公钥所在的地方

C:\Users\name\.ssh\

.pub就是公钥

5.点击github网页的右上角用户头像进入设置


6.选择ssh选项,然后点击new ssh key,将公钥里的内容复制粘贴到ssh密钥框里

7.测试 SSH 连接 

在 Git Bash 中输入对应平台的测试命令

# 测试 GitHub 连接
ssh -T git@github.com

# 测试 GitLab 连接
ssh -T git@gitlab.com

# 测试 Gitee 连接
ssh -T git@gitee.com

       首次连接会提示确认主机指纹,输入 yes 后回车。如果看到类似 "Hi 你的用户名!You've successfully authenticated..." 的提示,说明配置成功。

完成后,你就可以继续使用 SSH 方式操作 Git 仓库了(如 git clone git@xxxgit push 等)。

8.测试链接失败情况处理

出现

$ ssh-add /c/Users/name/.ssh/ssh_key_git/id_rsa
Could not open a connection to your authentication agent.

       出现 "Could not open a connection to your authentication agent" 错误,是因为 SSH 代理(ssh-agent)没有启动。需要先启动代理再加载密钥,具体步骤如下:

解决方法:

  1. 启动 SSH 代理
    在 Git Bash 中输入

    eval $(ssh-agent -s)
    
     

    成功启动后会显示类似 Agent pid 1234 的信息(数字是进程 ID)。

  2. 重新加载私钥
    再次执行加载密钥的命令(使用你的私钥路径):

    ssh-add /c/Users/zky/.ssh/ssh_key_git/id_rsa
    
  3. 验证是否加载成功
    输入以下命令查看已加载的密钥:

    ssh-add -l
    

    如果显示了你的密钥指纹,说明加载成功。

如果还是报超时错误,需要换一下端口以及其他配置。

在C:\Users\name\.ssh\的这个目录下才是ssh的客户端的配置地方,新建文件conf,如下:

添加一下内容:

# GitHub 配置
Host github.com
  Hostname ssh.github.com  # GitHub 的 SSH 服务器地址
  Port 443                # 用 443 端口(部分网络屏蔽 22 端口时可用)
  User git                # GitHub 固定用户名,必须是 git
  IdentityFile ~/.ssh/ssh_key_git/id_rsa

补充一下对于Windows下的ssh的客户端和服务器端的一些常用命令:

#查看关于ssh的所有服务的安装状态
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

#配置本机电脑的ssh服务器端:快速确认 “Windows 防火墙是否允许 OpenSSH 服务器通过”
Get-NetFirewallRule -Name *OpenSSH-Server* | Select Name, DisplayName, Enabled

#配置本机电脑的ssh服务器端:设置sshd ssh服务器端自启动
Set-Service -Name sshd -StartupType 'Automatic'

#配置本机电脑的ssh服务器端:在 Windows 系统防火墙中创建一条允许外部设备通过 SSH 协议(默认端口 22)远程连接本机的入站规则,确保 SSH 服务能正常接收外部连接请求
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

#配置本机电脑的ssh服务器端:启动本地sshd服务器端
Start-Service sshd

#配置本机电脑的ssh服务器端:停止本地sshd服务器端
Stop-Service -Name sshd

#配置本机电脑的ssh服务器端:获取本地sshd服务器端状态
Get-Service -Name sshd


#本机电脑的ssh客户端:连接另外一台安装了ssh服务器的电脑
ssh 用户名@服务器IP或主机名 -p 端口号
#-v是打印日志功能
ssh -v 用户名@服务器IP或主机名 -p 端口号

#传输文件夹(需加 -r 参数,递归传输)
# 本地文件夹 → 远程
scp -r 本地文件夹路径 用户名@服务器IP或主机名:远程保存路径

# 远程文件夹 → 本地
scp -r 用户名@服务器IP或主机名:远程文件夹路径 本地保存路径

#通过 ssh-copy-id 命令将本地公钥写入远程服务器的授权列表(避免每次输入密码)
ssh-copy-id 用户名@服务器IP或主机名

补充说明:

  • 每次重启 Git Bash 后,都需要重新执行 eval $(ssh-agent -s) 启动代理,再用 ssh-add 加载密钥(如果设置了密钥密码,此时需要输入密码)。
  • 若想避免每次手动启动代理,可以配置 Git Bash 自动启动 ssh-agent(需要修改 .bashrc 或 .profile 文件,适合有经验的用户)。

完成后,再次测试与 GitHub 的连接:

ssh -T git@github.com

在 Windows 系统中,要让 SSH 代理(ssh-agent)开机自动启动并加载你的 SSH 密钥,可以通过以下两种方法实现:

方法 1:通过 Git Bash 配置自动启动(推荐)

这种方法会让 Git Bash 启动时自动运行 ssh-agent 并加载密钥,步骤如下:

  1. 打开 Git Bash 配置文件
    在 Git Bash 中输入以下命令,编辑 .bashrc 文件(如果没有会自动创建):

    vim ~/.bashrc
    
  2. 添加自动启动脚本
    在文件末尾粘贴以下内容(替换为你的私钥路径):

    # 启动 SSH 代理
    if [ -z "$SSH_AUTH_SOCK" ]; then
      # 检查是否已有 ssh-agent 进程
      eval $(ssh-agent -s)
      # 加载你的 SSH 私钥(替换为实际路径)
      ssh-add /c/Users/name/.ssh/ssh_key_git/id_rsa
    fi
    
    • 测试配置
      关闭当前 Git Bash 窗口,重新打开一个,会自动启动代理并加载密钥。可以用以下命令验证:

      ssh-add -l  # 查看已加载的密钥
    1. 检测到配置文件情况:系统中存在 ~/.bashrc(这是你之前配置自动启动 SSH 代理的文件),但缺少 ~/.bash_profile~/.bash_login 或 ~/.profile 这些登录级别的配置文件。

    2. 自动修复操作:Git Bash 自动为你创建了 ~/.bash_profile 文件,并且在其中添加了加载 ~/.bashrc 的指令。这样一来,无论你是以登录方式还是非登录方式启动 Git Bash,~/.bashrc 中的配置(启动 SSH 代理、加载密钥等)都会生效。

    后续操作建议:

    1. 无需额外处理这个提示,它只是告知你系统做了自动配置。

    2. 可以通过以下命令确认 ~/.bash_profile 是否正确创建:

      cat ~/.bash_profile
      

      正常情况下会看到类似这样的内容(用于加载 .bashrc):

      # generated by Git for Windows
      test -f ~/.profile && . ~/.profile
      test -f ~/.bashrc && . ~/.bashrc
      
    3. 重新打开 Git Bash 测试,之前配置的 SSH 代理自动启动和密钥加载功能应该已经正常工作了。可以再次执行连接测试:

      ssh -T git@github.com
      

           如果看到 GitHub 的欢迎信息,说明所有配置都已生效,接下来就可以正常使用 git clonegit push 等命令了。


    补充2(有些时候会把ssh客户端和sshd服务器端的配置路径的配置文件搞混):

    Windows 系统(安装 OpenSSH Server 后)

    • 默认路径(适用于通过系统自带 “可选功能” 安装的 OpenSSH Server):

      powershell

      C:\ProgramData\ssh\sshd_config
      

    • 注意:ProgramData 是隐藏目录,需在文件资源管理器中开启 “显示隐藏文件” 才能直接访问。
    • 早期版本或手动安装的 OpenSSH 可能位于:C:\OpenSSH\sshd_config(需根据实际安装路径调整)。

    二、仓库分支

    1.先clone一个仓库下来作为测试演示

    $ git clone git@github.com:Molesidy/ubuntu_git_rep_test.git
    Cloning into 'ubuntu_git_rep_test'...
    remote: Enumerating objects: 3, done.
    remote: Counting objects: 100% (3/3), done.
    remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 (from 0)
    Receiving objects: 100% (3/3), done.
    

    2.查看分支

    #查看当前分支情况
    git branch                   

    3.新建分支

    #新建一个分支branch_test1
    git branch branch_test1

    4.切换到分支上开发操作

    #切换到新建的分支branch_test1
    git checkout branch_test1

    #如果希望在创建分支的同时切换到该分支,可以使用以下命令:
    
    git checkout -b branchname

    5.在 branch_test1分支上将仓库的测试文件进行写入数据改变,此时远程的mytest.txt文件是空的

    6.在branch_test1分支上,进行提交文件mytest.txt

     #将新建分支test推送到GitHub上
    git push origin branch_test1  或者 git push origin branch_test1:branch_test1
    
    
    
    #本质是「本地分支 → 远程仓库分支」的映射关系,格式可拆解为:
    #git push <远程仓库名> <本地分支名>:<远程分支名>    
    #远程仓库名是你现在所在的仓库名字默认是origin    

    7.github切回main,查看mytest.txt

    8.切回main,创建一个新的文件test2.txt,来回切换一次,看看区别

    在main分支提交测试文件二到本地分支main后,再切回branch_test1分支看文件就看不到test2.txt了

    然后我将测试文件2推送到远程的main了

    9.尝试将branch_test1的测试文件1:mytest.txt合并到main,现在的情况是本地仓库的mytest.txt看起来是只有一个文件,但是逻辑上是两个,查看内容,即使我现在在main分支下将全部内容提交推送到远程,mytest.txt 里并没有 hello github

    main

    branch

    10.分支的合并

    当在不同的分支上进行了独立的开发工作后,我们可能需要将某个分支的修改合并到主线或其他分支上。Git提供了合并(merge)操作来实现这个功能。

    切回main

    #指定哪一个分支合并到你现在的分支下
    git merge branch_test1

    这是 Git 在执行分支合并操作时自动打开的提交信息编辑界面(默认使用 Vim 编辑器),目的是让你为这次合并填写 “提交说明”(记录合并的原因、内容等)。

    界面内容解读

    • 蓝色提示文字:

      • Merge branch 'branch_test1':说明当前要合并的是名为 branch_test1 的分支。
      • Please enter a commit message to explain why this merge is necessary...:提示你 “输入提交信息,解释这次合并为何必要(尤其是当合并的是‘更新后的上游分支到主题分支’时)”。
      • Lines starting with '#' will be ignored, and an empty message aborts the commit.:以 # 开头的行是 “注释行”,Git 会忽略它们;如果提交信息为空,这次合并会被取消。
    • 下方大量带 # 的行:是 Git 自动生成的 “合并上下文”(比如分支信息、合并关联的提交等),仅用于参考,不会被当作提交信息的一部分。

    如何操作这个界面(完成合并提交)

    当前处于 Vim 的普通模式,需要先进入「插入模式」才能输入文字,步骤如下:

    1. 按键盘上的 i 键(进入 Vim 插入模式,此时左下角会显示 -- INSERT --);
    2. 在编辑区域输入有意义的合并提交信息(比如 Merge branch_test1: 合并测试分支的功能更新);
    3. 按 Esc 键(回到 Vim 普通模式);
    4. 输入 :wq(冒号 + wq,意思是 “保存(write)并退出(quit)”),然后按回车键。

    这样就完成了合并的提交,Git 会记录这次合并及你填写的说明。

    补充:如果想放弃合并?

    如果临时不想合并了,在这个界面中:

    • 按 Esc 键回到普通模式;
    • 输入 :q!(冒号 + q!,意思是 “强制(!)退出(quit)且不保存”),然后按回车键。
      Git 会取消这次合并操作,回到合并前的状态。

    合并完成,提交一下

    11.到branch_test1分支下修改一下文件,演示解决冲突(这里冲突没出来就后面有空再补)

    12.合并完成后有时候就删了

    #branchname是你希望删除的分支的名称。注意,只有当该分支的修改已经合并到其他分支时,才能被安全地删除。
    
    git branch -d branchname
    
    #如果分支的修改尚未合并,可以使用强制删除的命令:
    git branch -D branchname

    13.现在又有许多其他命令,更多的命令就看看菜鸟教程吧,所以命令常用常新。

    Git 分支管理 | 菜鸟教程

    Logo

    有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

    更多推荐