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 = 代码托管与协作平台

下图直观展示了 Git 与 GitHub 的定位和协作关系:

在这里插入图片描述

GitHub在软件开发中的价值
  • 代码安全备份:本地电脑坏了也不怕

  • 多人协作开发:分工写代码,不互相覆盖

  • 规范化开发流程:提交 → 审核 → 合并 → 发布

  • 开源共享:全球开发者一起贡献项目

  • 降低团队沟通成本:代码、文档、任务都在一处

  • 自动化 CI/CD:自动测试、自动部署

  • 个人 / 企业简历展示:GitHub 就是程序员的作品集


账号注册与SSH配置

账号注册流程(用户名、邮箱、密码设置)
  • 国内QQ邮箱 网易邮箱、国外谷歌邮箱、苹果账号
git基础配置
  • 下载git工具

    Git - Install for Windows

  • 打开git bash

  • 全局配置用户名和邮箱

    # 配置用户名(替换成你的,比如 "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 "qing********"
    git config --global user.email "194********@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 "qing********"
    git config user.email "194********@qq.com"
    
  • 查看已经配置的内容

    # 全局配置查看
    git config --list
    # 或者
    git config -l    
    #查看完成后如下图
    输入q快速退出
    

在这里插入图片描述

局部配置查看

查看当前仓库的局部配置(进入仓库目录后执行)

git config --local --list


- 可选配置好用、好看^ - ^

```powershell
# 开启彩色输出
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 配置的完整 6 步流程:

在这里插入图片描述

  • 检查是否已有 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
    #注意:git bash中的引号要用英文的双引",不要用单引号'
    
  • 把公钥复制到 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 回车。

    成功后终端会显示:Hi 用户名! You have successfully authenticated, but GitHub does not provide shell access.
    在这里插入图片描述

  • 如果失败?常见原因:

    1. 公钥复制错了(比如少复制了最后一行,或多了空格);

    2. 生成密钥时用的邮箱和 GitHub 不一致;

    3. 私钥没添加到 SSH 代理(重新执行 ssh-add ~/.ssh/id_rsa)。

    4. 端口放行问题

      # 例如
      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
      

config文件在C盘下user/用户/.ssh下,.ssh是隐藏文件需要你显示出来。
在这里插入图片描述

解决方法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
    

仓库创建与基本代码提交

下图展示了从本地初始化到推送至 GitHub 的完整流程:
在这里插入图片描述

从本地开始追踪一个项目到GitHub
  • 进入本地项目文件夹,初始化 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 上 “建个空文件夹”,用来接收本地代码:

    1. 打开 GitHub 官网,点击右上角「+」号 → 选择「New repository」(新建仓库);
    2. 填写仓库信息:
      • Repository name:仓库名(必须和本地项目文件夹名一致,比如 my-project,方便识别);
      • Description(可选):项目描述(比如「我的第一个 Python 项目」);
      • Visibility:选「Public」(公开)或「Private」(私有,免费版也支持);
      • ❗ 重点:不要勾选「Add a README file」「Add .gitignore」「Choose a license」(这些会导致远程仓库非空,后续推送冲突);
    3. 点击「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
    

    在这里插入图片描述
    注:.idea/ 是 IDEA 的配置文件夹,不建议提交到 GitHub 上。可以在项目根目录新建 .gitignore 文件写入下面的引用。然后再执行上图内容。

    .idea/
    *.iml
    learning/

在这里插入图片描述

  • 实践任务

    1. 创建名为"my-first-repo"的个人仓库
    2. 在本地仓库并添加一个名为"hello-world.txt"的新文件
    3. 提交修改并推送到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
核心作用
  1. 隔离开发,避免代码混乱(最核心作用)

这是分支最根本的价值:

  • 主分支(main/master):存放稳定、可发布的代码(比如上线的产品代码),绝对不能直接在上面改代码;
  • 功能分支(feature/*):开发新功能(比如「feature - 支付功能」「feature - 用户登录」);
  • Bug 修复分支(bugfix/*/hotfix/*):修复线上 Bug(hotfix 是紧急修复,直接基于 main 分支);
  • 测试分支(test/dev):用于测试未上线的功能。

就算你在 feature 分支把代码改烂了,main 分支的稳定代码也毫发无损,不会影响团队其他人。

  1. 支持多人并行开发

团队协作时,每个人都可以在自己的分支上开发:

  • 你开发「支付功能」→ 分支 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

在这里插入图片描述

合并分支解决冲突

什么时候会触发合并冲突

冲突的核心原因是:两个不同的分支,修改了同一个文件的同一行 / 同一部分代码,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 learning
cd learning

# 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
    
  • 冲突提示

在这里插入图片描述

  • 查看冲突后的 Python 文件

    打开 calculator.py,会看到 Git 插入的冲突标记,核心冲突部分如下:

在这里插入图片描述

  • 手动解决冲突

解决思路(融合需求:既加税费,又四舍五入)

修改冲突文件,删除标记,合并逻辑:

# 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 -d
    

    git 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 撤销提交 + 暂存区 + 工作区,代码直接丢失

实践任务

  1. 在"my-first-repo"仓库中创建一个功能分支
  2. 在该分支上添加一个功能文件并提交
  3. 尝试合并到主分支并制造一个冲突
  4. 解决冲突并再次合并
  5. 使用规范的提交信息格式进行一次提交

GitHub协作开发

Fork/PR工作流、Code Review、参与开源项目

Fork与同步上游仓库

Fork 是把别人的仓库复制一份到你自己的 GitHub 账号下,你可以自由修改;同步上游仓库是把原仓库(上游)的最新代码同步到你的 Fork 仓库,避免你的代码和原仓库脱节。

下图展示了 Fork + Pull Request 的完整开源协作工作流:

在这里插入图片描述

Fork仓库的概念与适用场景
  1. Fork 的本质
    Fork 就是「一键复制」:
    把 GitHub 上别人的仓库(比如开源项目),完整复制到你自己的 GitHub 账号下,包括所有代码、分支、提交记录。
    你可以把它理解成:
    你在开源项目的 “副本” 上做修改,既不影响原项目,又能自由折腾,改好后还能通过 PR 把你的修改贡献给原项目。
  2. Fork 的核心场景
    贡献开源项目:想给别人的开源项目提功能 / 修 Bug,但没有直接修改原仓库的权限 → Fork 后改自己的副本,再提 PR;
    学习 / 二次开发:想基于别人的项目做定制化开发(比如改一个开源工具),但不想影响原项目;
    保存项目快照:看到好用的项目,Fork 到自己账号,防止原作者删除 / 修改。
Fork 仓库的操作步骤

以 Fork 一个开源项目(比如 https://github.com/AUTOMATIC1111/stable-diffusion-webui)为例:

  1. 打开原仓库的 GitHub 页面;
  2. 点击页面右上角的「Fork」按钮(紫色按钮,很显眼);
  3. 等待几秒,GitHub 会自动跳转到你账号下的 Fork 仓库(地址:https://github.com/你的用户名/stable-diffusion-webui);
  4. 至此,你已经拥有了原仓库的完整副本,可自由修改。
同步上游仓库更新方式
  • GitHub 网页端同步

    方法 1:GitHub 网页端同步

    适用场景:原仓库更新少,且无复杂冲突。

    步骤:

    1. 打开你 Fork 后的仓库页面;
    2. 找到「Sync fork」按钮,点击;
    3. 点击「Update branch」按钮,GitHub 会自动尝试合并原仓库的最新代码到你的 Fork 仓库;
    4. 如果无冲突,同步完成;如果有冲突,会提示「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
      

本文持续更新,欢迎 Star 收藏!如有问题欢迎在评论区留言交流。

  1. 找到「Sync fork」按钮,点击;
  2. 点击「Update branch」按钮,GitHub 会自动尝试合并原仓库的最新代码到你的 Fork 仓库;
  3. 如果无冲突,同步完成;如果有冲突,会提示「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
      

本文持续更新,欢迎 Star 收藏!如有问题欢迎在评论区留言交流。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐