GitHub基础入门
GitHub = 基于 Git 的代码托管 + 协作开发平台。程序员的 “云端代码网盘 + 协作工作台 + 项目社区”。核心功能代码托管:把项目代码存在云端版本管理:记录每一次修改,可回滚、可对比团队协作:多人一起开发同一个项目Issue(任务 / BUG 管理):提需求、报 bug、分配任务:提交代码改动,让别人审核后合并:自动化测试CI\CD、打包、部署:免费搭建静态网站分支类型命名规范用途主
目录
只有动手亲自操作一遍才能掌握。
GitHub简介
什么是GitHub及其核心功能
GitHub = 基于 Git 的代码托管 + 协作开发平台。程序员的 “云端代码网盘 + 协作工作台 + 项目社区”。
核心功能
- 代码托管:把项目代码存在云端
- 版本管理:记录每一次修改,可回滚、可对比
- 团队协作:多人一起开发同一个项目
- Issue(任务 / BUG 管理):提需求、报 bug、分配任务
- Pull Request(PR):提交代码改动,让别人审核后合并
- GitHub Actions:自动化测试CI\CD、打包、部署
- GitHub Pages:免费搭建静态网站
- Star / Fork / Watch:收藏、复制、关注别人项目
GitHub与Git的关系与区别
GitHub
- 是云端服务,用来存放 Git 仓库
- 提供网页界面、协作、权限、社区
- 必须联网
Git
- 是本地版本控制软件(命令行 / 桌面工具)
- 记录代码历史、分支、合并
- 不需要联网也能用
关系
- GitHub 底层使用 Git
- 你在本地用 Git 写代码 → push 到 GitHub
- GitHub 让 Git 从 “本地” 变成 “云端 + 协作”
最简单区别
Git 是工具,GitHub 是平台。
- Git = 版本控制工具
- GitHub = 代码托管与协作平台
GitHub在软件开发中的价值
- 代码安全备份:本地电脑坏了也不怕
- 多人协作开发:分工写代码,不互相覆盖
- 规范化开发流程:提交 → 审核 → 合并 → 发布
- 开源共享:全球开发者一起贡献项目
- 降低团队沟通成本:代码、文档、任务都在一处
- 自动化 CI/CD:自动测试、自动部署
- 个人 / 企业简历展示:GitHub 就是程序员的作品集
账号注册与SSH配置
账号注册流程(用户名、邮箱、密码设置)
- 国内QQ邮箱 网易邮箱、国外谷歌邮箱、苹果账号
git基础配置
-
下载git工具
-
全局配置用户名和邮箱
# 配置用户名(替换成你的,比如 "zhangsan123") git config --global user.name "Your GitHub Username" # 配置邮箱(替换成你的,比如 "zhangsan@xxx.com") git config --global user.email "Your GitHub Email" #例如我的 git config --global user.name "PLAYER********" git config --global user.email "230********@qq.com" -
局部配置用户名和邮箱
# 进入具体的项目路径下cd /path/to/your/project # 配置用户名(替换成你的,比如 "zhangsan123") git config user.name "Your GitHub Username" # 配置邮箱(替换成你的,比如 "zhangsan@xxx.com") git config user.email "Your GitHub Email" #例如我的 git config user.name "PLAYER********" git config user.email "230********@qq.com" -
查看已经配置的内容
# 全局配置查看 git config --list # 或者 git config -l # 局部配置查看 # 查看当前仓库的局部配置(进入仓库目录后执行) git config --local --list -
可选配置好用、好看^ - ^
# 开启彩色输出 git config --global color.ui auto # 扩大缓冲区 git config --global http.postBuffer 524288000 # 配置换行符规则 git config --global core.autocrlf true # 配置简写 和linux在bashrc中配置别名一样 git config --global alias.st status # git st 替代 git status git config --global alias.br branch # git br 替代 git branch -
修改已存在配置
# 清空配置 git config --global --unset user.email # 修改配置 直接重新输入命令覆盖即可
ssh配置
为了让本地 Git 和 GitHub 之间的通信更安全、更方便,彻底摆脱每次操作都要输入账号密码的麻烦。
HTTPS 方式的本质是 “用账号密码验证身份”, 如果你的密码泄露,别人就能操作你的仓库。
而 SSH 是基于 “密钥对” 验证。
-
检查是否已有 SSH 密钥
# 下载git后 搜索打开git bash ls -al ~/.ssh -
生成新的ssh密钥
执行下面的命令,把邮箱换成你 GitHub 注册的邮箱
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 或者 这个格式 ssh-keygen -t ed25519 -C "your_email@example.com"执行后终端会出现提示,全程按「回车」即可,不用输入任何内容:
- 第一步提示「Enter file in which to save the key」:回车(用默认路径);
- 第二步提示「Enter passphrase」:回车(设置密码的话每次用 SSH 都要输,新手直接免密);
- 第三步提示「Enter same passphrase again」:再回车。
私钥:
~/.ssh/id_rsa或者~/.ssh/id_ed25519(绝对不能泄露!泄露后私钥会失效);公钥:
~/.ssh/id_rsa.pub或者~/.ssh/id_ed25519.pub(等下要复制到 GitHub)。 -
启动ssh代理
# 启动 SSH 代理 eval "$(ssh-agent -s)" # 将私钥添加到代理中 ssh-add ~/.ssh/id_rsa or ssh-add ~/.ssh/id_ed25519 -
把公钥复制到 GitHub
复制公钥内容先把公钥文件里的内容全选复制,不同系统命令不同:
# Windows (git bash) clip < ~/.ssh/id_rsa.pub or clip < ~/.ssh/id_ed25519.pub # Linux xclip -sel clip < ~/.ssh/id_rsa.pub or xclip -sel clip < ~/.ssh/id_ed25519.pub # macos pbcopy < ~/.ssh/id_rsa.pub or pbcopy < ~/.ssh/id_ed25519.pub -
登录 GitHub 粘贴公钥
-
点击右上角的头像 → 选择「Settings」(设置)
-
在左侧菜单栏找到「SSH and GPG keys」(SSH 和 GPG 密钥);
-
点击右上角的「New SSH key」(新建 SSH 密钥);
-
填信息:
- Title:随便填(比如「我的笔记本电脑」,方便识别是哪台设备);
- Key type:默认「Authentication Key」就行;
- Key:把刚才复制的公钥内容粘贴进去(直接 Ctrl+V);
-
点击「Add SSH key」(添加 SSH 密钥)
-
弹出验证密码的提示,输入你的 GitHub 密码,确认即可。
-
-
验证 SSH 是否配置成功
回到终端git bash,执行命令
ssh -T git@github.com第一次执行会提示「Are you sure you want to continue connecting」,输入
yes回车。 -
如果失败?常见原因:
-
公钥复制错了(比如少复制了最后一行,或多了空格);
-
生成密钥时用的邮箱和 GitHub 不一致;
-
私钥没添加到 SSH 代理(重新执行
ssh-add ~/.ssh/id_rsa)。 -
端口放行问题
# 例如 LEGION@LAPTOP-NPHPG1HU MINGW64 ~ $ ssh -T git@github.com ssh: connect to host github.com port 22: Connection refused # 在config文件中指定端口为443即可。 Host github.com HostName ssh.github.com Port 443 User git
解决方法1 查看home路径是否正确
echo $HOME #示例输出 /c/Users/***强制指定密钥进行连接测试
# 请将路径替换为你实际的绝对路径 ssh -i "/c/Users/xxx/.ssh/id_ed25519" -T git@github.com or ssh -i "/c/Users/xxx/.ssh/id_rsa" -T git@github.com解决方法2
在大模型中输入你的报错信息即可,大概率会因为配置文件的原因,跟着来即可。
-
-
后续克隆项目选择 ssh版本即可
# 例如 git clone git@github.com:PLAYEROFMYLIFE/gitdir.git
仓库创建与基本代码提交
从本地开始追踪一个项目到
-
进入本地项目文件夹,初始化 Git 仓库(使用git bash)
# 进入具体的项目文件夹 默认在c盘 cd D: cd learngit/ # 初始化git仓库 会生成一个.git隐藏文件夹 # 指定默认分支为 main,和 GitHub 一致 git init --initial-branch=main执行后终端提示
Initialized empty Git repository in ...,说明初始化成功。 -
将本地所有文件添加到暂存区,完成第一次提交
# 创建.gitignore 文件(用于忽略一些不需要追踪或上传的文件) touch .gitignore # 把文件夹里所有文件添加到 Git 暂存区(. 代表所有文件) git add . # 提交暂存区的文件到本地仓库(-m 后是提交说明,必填,写清楚这次提交的内容) git commit -m "first commit ^_^" -
在 GitHub 上创建一个空的远程仓库
这一步是给你的项目在 GitHub 上 “建个空文件夹”,用来接收本地代码:
-
打开 GitHub 官网,点击右上角「+」号 → 选择「New repository」(新建仓库);
-
填写仓库信息:
- Repository name:仓库名(必须和本地项目文件夹名一致,比如
my-project,方便识别); - Description(可选):项目描述(比如「我的第一个 Python 项目」);
- Visibility:选「Public」(公开)或「Private」(私有,免费版也支持);
- ❗ 重点:不要勾选「Add a README file」「Add .gitignore」「Choose a license」(这些会导致远程仓库非空,后续推送冲突);
- Repository name:仓库名(必须和本地项目文件夹名一致,比如
-
点击「Create repository」(创建仓库)。
创建完成后,GitHub 会跳转到仓库页面,显示仓库的 SSH 地址(比如
git@github.com:你的用户名/my-project.git),先复制这个地址(后面要用)。 -
-
关联本地仓库和 GitHub 远程仓库
回到终端,执行命令把本地仓库和刚创建的 GitHub 仓库绑定:
# 添加远程仓库(origin 是远程仓库的别名,默认用 origin 即可,不用改) # 替换成你刚复制的 GitHub SSH 地址 git remote add origin git@github.com:PLAYEROFMYLIFE/learngit.git # 验证是否关联成功(可选) git remote -v -
将本地代码推送到 GitHub
# 把本地 main 分支推送到 origin(远程仓库)的 main 分支 # -u 是绑定默认推送分支,后续只需 git push 即可,不用重复写分支名 git push --set-upstream origin main -
打开github 验证即可。
从仓库开始追踪一个项目
-
打开github仓库,克隆仓库到本地
# 改成具体名字 git clone git@github.com:PLAYEROFMYLIFE/learngit.git -
本地修改文件并提交
# 查看修改状态 git status # 添加修改到暂存区 git add filename # 提交修改到本地仓库 git commit -m "modify commit" # 推送到远程仓库 git push origin main -
实践任务
- 创建名为"my-first-repo"的个人仓库
- 在本地仓库并添加一个名为"hello-world.txt"的新文件
- 提交修改并推送到GitHub
Git分支与版本控制
分支管理策略、合并冲突解决、提交规范
分支管理基础
分支的概念与作用
分支能让你在不影响主代码的前提下,独立开发新功能、修复 Bug,最后再把改动合并回去。
GitHub Flow 是一种轻量级的分支策略,其核心是主分支(main/master)始终处于可部署状态,所有新功能都在短期存在的功能分支上开发,完成后通过Pull Request合并回主分支。
分支的概念
假设你在写一篇论文(对应「主分支 main」):
你想加一个新章节,但又怕写砸了影响已完成的内容 → 复制一份论文,在副本上写新章节(这就是「新建分支 feature - 新章节」);
写新章节时,发现原论文有个错别字 → 切回原论文改错别字(「切回 main 分支修复 Bug」);
新章节写完且没问题 → 把副本的内容合并回原论文(「合并 feature 分支到 main 分支」)。
Git 分支的本质就是:对代码库的一份 “独立快照”,分支之间互不干扰,你可以在任意分支上修改代码,不会影响其他分支。
main 分支:A → B → C → D(稳定的主代码)
↘
feature 分支: E → F → G(开发新功能的代码)
merge 后分支:A → B → C → D → G
核心作用
- 隔离开发,避免代码混乱(最核心作用)
这是分支最根本的价值:
- 主分支(main/master):存放稳定、可发布的代码(比如上线的产品代码),绝对不能直接在上面改代码;
- 功能分支(feature/*):开发新功能(比如「feature - 支付功能」「feature - 用户登录」);
- Bug 修复分支(bugfix/*/hotfix/*):修复线上 Bug(hotfix 是紧急修复,直接基于 main 分支);
- 测试分支(test/dev):用于测试未上线的功能。
就算你在 feature 分支把代码改烂了,main 分支的稳定代码也毫发无损,不会影响团队其他人。
- 支持多人并行开发
团队协作时,每个人都可以在自己的分支上开发:
- 你开发「支付功能」→ 分支
feature-pay; - 同事开发「评论功能」→ 分支
feature-comment; - 互不干扰,开发完成后各自合并到主分支,避免多人改同一文件导致的冲突。
常用分支介绍
| 分支类型 | 命名规范 | 用途 |
|---|---|---|
| 主分支 | main或master | 存放稳定、可发布的代码(核心分支) |
| 开发分支 | dev/或develop/ | 团队日常开发的分支(所有功能先合到这) |
| 功能分支 | feature/xxx | 开发单个新功能(比如 feature-login) |
| Bug 修复分支 | bugfix/xxx | 修复开发中的 Bug |
| 紧急修复分支 | hotfix/xxx | 修复线上已发布版本的紧急 Bug |
分支的核心操作
# 1. 查看所有分支(* 表示当前所在分支)
git branch
# 2. 新建分支(比如新建 feature-login 分支)
git branch feature/login
# 3. 切换到新建的分支
git checkout/switch feature-login
# 简写(新建+切换一步到位,最常用)
git checkout -b feature-login
or
git switch -c feature-login
# 4. 把 feature-login 分支合并到 main 分支(先切回 main)
git checkout/switch main
git merge feature-login
# 5. 删除已合并的分支(开发完成后清理)
git branch -d feature-login
操作示例:
1、其中*表示当前所在分支
操作疑惑:
操作流程(模拟你的操作):
- 切到
feature-login分支 → 用 PyCharm 打开nihao.py→ 修改内容(比如加一行print("登录功能")); - 不执行任何 Git 提交操作(既没点 PyCharm 的「Commit」,也没输
git commit); - 切回
main分支 → 用 PyCharm 重新打开nihao.py。
结果:
PyCharm 里的 nihao.py 依然能看到你加的 print("登录功能")——修改跟着你到了 main 分支。
原因:
未提交的修改属于「工作区 / 暂存区」(Git 里的临时区域),不属于任何分支的提交记录。切换分支时,Git 不会清空这些临时修改,所以 PyCharm 展示的还是修改后的文件。
合并分支解决冲突
什么时候会触发合并冲突?
冲突的核心原因是:两个不同的分支,修改了同一个文件的同一行 / 同一部分代码,Git 不知道该保留哪一个版本,只能暂停合并,等你手动决策。
常见场景
场景 1:多人改同一文件
- 你在
feature-login分支改了user.js的第 10 行; - 同事在
main分支也改了user.js的第 10 行; - 你把
feature-login合并到main时,触发冲突。
场景 2:自己在不同分支改同一文件
- 你在
feature-pay分支改了config.js的配置; - 又在
bugfix-pay分支改了config.js同一处配置; - 合并两个分支时触发冲突。
场景 3:分支长期未合并,主分支已更新
- 你的
feature分支基于 1 个月前的main分支创建; - 期间
main分支的核心文件已被多次修改; - 你合并时,大量文件因内容差异触发冲突。
创建测试目录和初始 Python 文件
先搭建一个干净的 Git 仓库,创建基础 Python 文件:
# 1. 创建测试文件夹并进入
mkdir git-conflict-demo
cd git-conflict-demo
# 2. 初始化 Git 仓库(指定 main 分支)
git init --initial-branch=main
# 3. 创建一个 Python 文件(功能:计算两个数的和)
touch calculator.py
- 编辑calculator文件
# calculator.py - 初始版本
def add(a, b):
"""计算两个数的和"""
result = a + b
return result
# 测试代码
if __name__ == "__main__":
print("计算结果:", add(10, 20))
- 提交代码到main分支
# 1. 添加文件到暂存区
git add calculator.py
# 2. 提交代码(第一次提交)
git commit -m "初始化:添加加法函数"
- 创建 feature 分支并修改代码
git checkout -b feature-add-tax
- 修改caculator.py
# calculator.py - feature 分支版本
def add(a, b):
"""计算两个数的和(含10%税费)"""
result = (a + b) * 1.1 # 核心修改:加了税费计算
return result
# 测试代码
if __name__ == "__main__":
print("计算结果(含税费):", add(10, 20))
- 提交feature 分支的修改
git add calculator.py
git commit -m "feature分支:加法函数增加税费计算"
- 切换回main分支,
git checkout/switch main
-
修改calculator.py
同样修改
add函数的核心计算行(和 feature 分支改了同一行):
# calculator.py - main 分支版本
def add(a, b):
"""计算两个数的和(四舍五入)"""
result = round(a + b, 2) # 核心修改:四舍五入,和 feature 分支冲突
return result
# 测试代码
if __name__ == "__main__":
print("计算结果(四舍五入):", add(10, 20))
- 提交 main 分支的修改
git add calculator.py
git commit -m "main分支:加法函数增加四舍五入"
-
合并分支, 触发冲突
现在尝试把 feature 分支合并到 main 分支,因为两个分支修改了
calculator.py的同一行(result = ...),会直接触发冲突:git merge feature-add-tax -
冲突提示
# 看到类似这样的提示,说明冲突触发
Auto-merging calculator.py
CONFLICT (content): Merge conflict in calculator.py
Automatic merge failed; fix conflicts and then commit the result.
-
查看冲突后的 Python 文件
打开
calculator.py,会看到 Git 插入的冲突标记,核心冲突部分如下:
<<<<<<< HEAD
# calculator.py - main 分支版本
def add(a, b):
"""计算两个数的和(四舍五入)"""
result = round(a + b, 2) # 核心修改:四舍五入,和 feature 分支冲突
=======
# calculator.py - feature 分支版本
def add(a, b):
"""计算两个数的和(含10%税费)"""
result = (a + b) * 1.1 # 核心修改:加了税费计算
>>>>>>> feature-add-tax
return result
# 测试代码
if __name__ == "__main__":
<<<<<<< HEAD
print("计算结果(四舍五入):", add(10, 20))
=======
print("计算结果(含税费):", add(10, 20))
>>>>>>> feature-add-tax
- 手动解决冲突
解决思路(融合需求:既加税费,又四舍五入)
修改冲突文件,删除标记,合并逻辑:
# calculator.py - 解决冲突后的版本
def add(a, b):
"""计算两个数的和(含10%税费+四舍五入)"""
result = round((a + b) * 1.1, 2) # 融合两个分支的逻辑
return result
# 测试代码
if __name__ == "__main__":
print("计算结果(含税费+四舍五入):", add(10, 20)) # 预期输出:33.0
-
在github网站上Pull & Request 可视化操作更建议方便。
需要现在本地进行先执行merge一下。
# 确保在main分支 git switch main # 合并 git merge feature-add-tax然后可以看见github上有pr,然后创建一个pr请求,手动解决冲突然后合并分支删除分支,在本地执行回到原先状态
git merge --abort # 然后将github上的代码pull下来同步 git pull
分支删除
本地分支删除
-
查看本地分支
git branch -
删除已合并分支
# 删除单个分支(-d 是 --delete,只删已合并的分支) git branch -d feature-login # 强制删除未合并的分支(谨慎!-D 是 --delete --force,会丢失代码) git branch -D feature-unfinished -
批量删除本地已合并的分支
# 先切到 main 分支,再删除所有已合并到 main 的本地分支 git checkout main git branch --merged main | grep -v "main" | xargs git branch -dgit branch --merged main:列出所有已合并到 main 的分支;grep -v "main":排除 main 分支本身;xargs git branch -d:批量删除这些分支。
远程分支删除
-
终端删除远程分支
# 删除远程的 feature-login 分支(origin 是远程仓库别名) git push origin --delete feature-login -
GitHub 网页删除远程分支
打开仓库页面 → 点击顶部「Code」→ 右侧「Branches」;
找到要删除的分支 → 点击右侧「⋯」→ 选择「Delete branch」;
确认删除即可(如果分支被保护,会提示无法删除)。
误删分支的恢复方法
如果不小心删了分支,只要该分支有提交记录 / 远程备份,就能恢复:
-
恢复本地已删除的分支
# 第一步:找到删除分支的最后一次提交记录(用 reflog 查看操作历史) git reflog # 第二步:从提交记录恢复分支(替换成你的提交哈希值,比如 abc123) git checkout -b feature-login abc123 -
恢复远程已删除的分支
# 先在本地恢复分支 #重新推送到远程即可: git push origin feature-login。
提交规范与最佳实践
-
提交信息格式规范
- 主题行限制50字符
- 使用祈使句("Fix"而非"Fixed")
- 提交类型标识(feat:功能,fix:修复,docs:文档等)
-
类型 说明 示例 feat新增功能(feature) feat: 新增用户登录接口fix修复 Bug(bugfix) fix: 修复登录密码加密错误docs仅修改文档(README / 注释等) docs: 更新API文档示例style代码格式调整(不影响逻辑,如缩进 / 空格) style: 格式化user.py代码refactor代码重构(既不新增功能也不修复 Bug) refactor: 简化add函数逻辑test添加 / 修改测试代码 test: 为add函数添加单元测试chore构建 / 工具配置修改(如.gitignore) chore: 新增Python依赖包 -
提交信息模板配置
- 在仓库创建时勾选"Add a README file"
- 使用
.github/COMMIT_TEMPLATE.md文件设置模板
-
提交历史的管理与重写
-
重做最近一次提交
刚提交完,发现提交信息写错(比如类型填错、主题超长); 漏加文件(比如忘了 git add 某个文件)。
git commit --amend -
重置最近一次提交
撤销最近一次提交,但保留工作区 / 暂存区的代码(代码不会丢);
适合:提交后发现代码有问题,想修改后重新提交。
git reset --soft HEAD^不同reset对比
命令 效果 git reset --soft仅撤销提交,保留暂存区 / 工作区代码 git reset --mixed撤销提交 + 暂存区,保留工作区代码(默认) git reset --hard撤销提交 + 暂存区 + 工作区,代码直接丢失
-
实践任务
- 在"my-first-repo"仓库中创建一个功能分支
- 在该分支上添加一个功能文件并提交
- 尝试合并到主分支并制造一个冲突
- 解决冲突并再次合并
- 使用规范的提交信息格式进行一次提交
GitHub协作开发
Fork/PR工作流、Code Review、参与开源项目
Fork与同步上游仓库
Fork 是把别人的仓库复制一份到你自己的 GitHub 账号下,你可以自由修改;同步上游仓库是把原仓库(上游)的最新代码同步到你的 Fork 仓库,避免你的代码和原仓库脱节。
-
Fork仓库的概念与适用场景
- Fork 的本质 Fork 就是「一键复制」: 把 GitHub 上别人的仓库(比如开源项目),完整复制到你自己的 GitHub 账号下,包括所有代码、分支、提交记录。 你可以把它理解成: 你在开源项目的 “副本” 上做修改,既不影响原项目,又能自由折腾,改好后还能通过 PR 把你的修改贡献给原项目。
- Fork 的核心场景 贡献开源项目:想给别人的开源项目提功能 / 修 Bug,但没有直接修改原仓库的权限 → Fork 后改自己的副本,再提 PR; 学习 / 二次开发:想基于别人的项目做定制化开发(比如改一个开源工具),但不想影响原项目; 保存项目快照:看到好用的项目,Fork 到自己账号,防止原作者删除 / 修改。
Fork 仓库的操作步骤
以 Fork 一个开源项目(比如 https://github.com/AUTOMATIC1111/stable-diffusion-webui)为例:
- 打开原仓库的 GitHub 页面;
- 点击页面右上角的「Fork」按钮(紫色按钮,很显眼);
- 等待几秒,GitHub 会自动跳转到你账号下的 Fork 仓库(地址:
https://github.com/你的用户名/stable-diffusion-webui); - 至此,你已经拥有了原仓库的完整副本,可自由修改。
同步上游仓库更新方式
-
GitHub 网页端同步
方法 1:GitHub 网页端同步
适用场景:原仓库更新少,且无复杂冲突。
步骤:
- 打开你 Fork 后的仓库页面;
- 找到「Sync fork」按钮,点击;
- 点击「Update branch」按钮,GitHub 会自动尝试合并原仓库的最新代码到你的 Fork 仓库;
- 如果无冲突,同步完成;如果有冲突,会提示「Resolve conflicts」,需手动解决(和之前讲的合并冲突操作一致)。
-
终端同步
适用场景:原仓库更新频繁,或网页端同步失败(有冲突)。
-
克隆你的 Fork 仓库到本地
git clone git@github.com:PLAYEROFMYLIFE/stable-diffusion-webui.git -
添加上游仓库(upstream)地址
# 添加原仓库为上游仓库(替换成原仓库的 SSH 地址) git remote add upstream git@github.com:xxx/awesome-project.git # 验证是否添加成功(会显示 origin 和 upstream) git remote -v -
拉取上游仓库的最新代码
git fetch upstream -
切换到你的主分支(比如 main)
git checkout main -
合并上游仓库的主分支到你的本地分支
# 把 upstream/main 的最新代码合并到你的本地 main 分支 git merge upstream/main -
把同步后的代码推送到你的 Fork 仓库(origin)
git push origin main
-
更多推荐


所有评论(0)