MINIBLOG

Blog Note Tags Links About
Home Search
Mar 25, 2026
miniyuan

第一个 PR


真的第一个 PR 吗 OoO

作业中描述的开发模式实际上不甚合理(虽然我也不知道我的模式是不是正确喵~)

SSH Agent Forwarding 配置

为了在虚拟机上使用 ssh 连接 GitHub,但是又不想直接把私钥放在危险的虚拟机上,我们可以通过使用 SSH 代理转发(SSH Agent Forwarding)的方式完成。以下均为 windows 系统。

SSH 工作原理

我们简要介绍一下 SSH 的工作原理。SSH 是一种非对称加密,客户端保存私钥,服务器保存公钥。一次连接的具体步骤如下:

  1. 客户端请求连接
  2. 服务器返回一个随机数
  3. 客户端用私钥对随机数进行加密,生成数字签名,并发送给服务器
  4. 服务器使用公钥解密数字签名,并对比和发送的随机数是否一致
  5. 验证一致,允许连接

我们可以看到服务器只需验证数字签名即可,不会管你究竟有没有私钥。

Agent Forwarding 的本质:在第三步时,让虚拟机向宿主机请求数字签名,本地使用私钥签名后转发给虚拟机用于连接。

宿主机配置

  • 启动 SSH Agent 服务
# 以管理员身份运行 PowerShell

# 设置 SSH Agent 服务自动启动
Set-Service ssh-agent -StartupType Automatic

# 启动服务
Start-Service ssh-agent

# 验证服务状态
Get-Service ssh-agent
  • 添加私钥到 Agent
# 添加用于转发的私钥
ssh-add $env:USERPROFILE\.ssh\your-key-name

# 查看已添加私钥
ssh-add -l

# 清空所有私钥
ssh-add -D
  • 配置 ssh config
Host your-host-name
  HostName 你的虚拟机 IP
  User 你的用户名
  ForwardAgent yes # 虚拟机开启代理转发

虚拟机配置

  • 配置 GitHub 的 SSH Config
# 编辑 ~/.ssh/config
vim ~/.ssh/config

# GitHub 配置
Host host-name
    HostName github.com
    User git
    IdentitiesOnly yes # 这样可以确保只使用 Agent 连接,因为没有指定本地文件

注意虚拟机上 ssh 连接的优先级如下:

  1. ssh-agent 中的密钥优先
  2. 然后尝试在 ssh config 中 IdentityFile 指定的密钥
  3. 最后尝试默认密钥文件
  • 在虚拟机测试 ssh 连接
ssh -T git@github.com

Fork 仓库

在 ABACUS 官方发布页面 点击右上角的 Fork 按钮, 添加一些描述,并勾选 Copy the develop branch only,然后点击 Create fork.

这样原仓库就完全复制到你的个人仓库中了。

Clone 远程仓库

先切换到你的工作目录,然后运行

# clone 远程仓库
git clone https://github.com/你的用户名/abacus-develop.git
# 或使用 ssh
git clone git@github.com:你的用户名/abacus-develop.git

# 切换到主分支
cd abacus-develop
# 确认远程仓库
git remote -v
# 如果地址不正确则修改
# 自己的远程仓库
git remote set-url origin https://github.com/你的用户名/abacus-develop.git
# 或使用 ssh
git remote set-url origin git@github.com:你的用户名/abacus-develop.git
# 上游原始仓库
git remote set-url upstream git@github.com:deepmodeling/abacus-develop.git
# 或使用 ssh
git remote set-url upstream https://github.com/deepmodeling/abacus-develop.git

创建功能分支

# 获取 tags
git fetch --tags # 默认从 origin 拉取
git fetch upstream --tags # 如果 origin 没有也可以从 upstram 拉取
# 查看 tags
git tag
# 切换到分支(只读)
git checkout v3.9.0.26
# 确认当前版本
git describe --tags

# 基于版本创建本地分支,并移动到本地分支
git checkout -b branch-name v3.9.0.26

修改代码

# 修改完成
git add .
git commit -m "描述"
# 查看最新提交详情
git log -1
# 确认后推送到远程分支
git push origin branch-name

创建 PR

  1. 打开你 fork 的仓库
  2. 点击 “Pull requests” → “New pull request”
  3. base(原仓库的分支)选择 develop,compare 选择你的分支名
  4. 标题为:2026PKUCourseHW5: XXX
  5. 描述自己的修改内容
  6. 点击 Create pull request

修改 PR

发布 PR 后会自动编译并测试你的代码,如果发现有问题可以直接在原分支上进行修改,并 push 到原分支上。原分支的修改会直接反映在 PR 中,因为 PR 本质上就是请求将原分支合并到目标分支,而不仅仅是合并某个快照。

目录
  • SSH Agent Forwarding 配置
    • SSH 工作原理
    • 宿主机配置
    • 虚拟机配置
  • Fork 仓库
  • Clone 远程仓库
  • 创建功能分支
  • 修改代码
  • 创建 PR
  • 修改 PR
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo