跳到主要内容

· 阅读需 12 分钟
Kyle

下面奉上一篇完整的技术博客,详细讨论了如何清除 Git 仓库历史中包含敏感信息的问题。博客内容包含了问题背景、各种解决方案的对比、推荐排序以及每种方法的详细操作步骤和示例,适用于所有基于 Git 的代码托管平台,不依赖于任何特定平台。


如何彻底清除 Git 仓库中提交的敏感信息

摘要

在开发过程中,常常会遇到这样的问题:仓库在初始化或开发时曾包含敏感内容(例如配置、密钥等),即便在后续提交中删除了这些文件,但敏感信息仍留存在历史记录中。本文将详细介绍清除历史中敏感信息的 5 种常见方法,逐一对比各自的适用范围、优缺点,并给出详细的操作步骤和示例,帮助开发者选择最适合自己场景的方案。


目录

  1. 问题背景
  2. 解决方案总览与对比
  3. 推荐方案排序
  4. 各方案详细操作步骤
  5. 总结与注意事项

问题背景

在代码开发初期,仓库可能包含一些敏感数据(例如配置文件、凭证信息等)。即使这些内容在后续的提交中被删除,历史记录中依然存在相关记录,公开仓库时就存在安全隐患。因此,如何彻底清除历史记录中的敏感内容就成了一个亟待解决的问题。


解决方案总览与对比

下面介绍 5 种常见的方法,并对它们的适用范围、优缺点进行简单对比说明:

方法适用范围优点缺点
A. 重写历史:git filter-branch / git filter-repo整个历史(所有提交)彻底清除所有敏感内容;适用于敏感数据大范围污染操作较复杂,修改历史后需强制推送,协作者需重新同步
B. 使用 BFG Repo-Cleaner清理大文件或敏感内容操作快速、简单;特别适用于清理大文件和敏感数据同样需要重写历史,推送后所有协作者必须重新拉取更新
C. 使用 git rebase -i 交互式变基仅影响少数近期提交针对性强,可逐个提交进行修改或删除,操作直观适用于提交数量较少的情况;若历史过长,操作工作量较大;需强制推送
D. 新建仓库并迁移内容对历史要求不高、可舍弃旧历史彻底摆脱历史问题,操作简单,风险较低(保留原仓库作为备份)丢失所有历史记录,需通知所有协作者切换到新仓库
E. 修改 .gitignore 预防未来问题防止敏感文件未来被提交操作简单,能有效避免未来敏感文件误提交无法清除已存在历史中的敏感信息,仅适用于预防后续问题

推荐方案排序

  1. A / B(重写历史)

    • 适用场景:敏感内容在整个仓库历史中广泛存在时,采用这两种方法能够彻底清除所有痕迹。
    • 说明:其中使用 git filter-repo 提供了较高的灵活性,而 BFG Repo-Cleaner 在操作速度上更快。
  2. C(git rebase -i 交互式变基)

    • 适用场景:敏感信息仅出现在近期的少量提交中时,交互式变基可针对性地修改或删除相关提交。
  3. D(新建仓库并迁移内容)

    • 适用场景:当历史记录不再需要保留,只需从最后一次无敏感记录的提交开始新建仓库。
  4. E(修改 .gitignore)

    • 适用场景:仅用于预防敏感文件在未来误提交,无法解决已有历史问题。

各方案详细操作步骤

A. 使用 git filter-branch / git filter-repo 重写历史

1. 使用 git filter-branch 示例

  1. 备份仓库
    在操作之前,务必备份现有仓库:
    git clone <仓库地址> <备份文件夹>
    
  2. 删除敏感文件
    假设敏感文件的路径为 <file-path>
    git filter-branch --force --index-filter \
      'git rm --cached --ignore-unmatch <file-path>' \
      --prune-empty --tag-name-filter cat -- --all
    
  3. 强制推送到远程仓库
    git push origin --force --all
    git push origin --force --tags
    
  4. 协作者重新同步
    通知其他协作者执行以下命令:
    git fetch origin
    git reset --hard origin/main
    

2. 使用 git filter-repo 示例

  1. 安装 git filter-repo
    例如在 macOS 上使用 Homebrew:
    brew install git-filter-repo
    
  2. 删除敏感文件
    git filter-repo --path <file-path> --invert-paths
    
  3. 强制推送更新
    git push origin --force --all
    

B. 使用 BFG Repo-Cleaner 清理敏感内容

  1. 安装 BFG Repo-Cleaner
    例如在 macOS 上使用 Homebrew:
    brew install bfg
    
  2. 克隆仓库的镜像
    git clone --mirror <仓库地址>
    
  3. 清理敏感文件
    假设需要删除的文件名为 <file-name>
    bfg --delete-files '<file-name>' <仓库名>.git
    
  4. 清理多余的引用并推送更新
    cd <仓库名>.git
    git reflog expire --expire=now --all
    git gc --prune=now --aggressive
    git push --force
    

C. 使用 git rebase -i 交互式变基

  1. 查找包含敏感信息的提交
    使用以下命令查看提交记录:
    git log --oneline
    
  2. 启动交互式变基
    假设需要修改最近 10 次提交:
    git rebase -i HEAD~10
    
  3. 在编辑器中修改提交列表
    将包含敏感信息的提交前的 pick 改为 edit(或直接删除该行以 drop 提交),例如:
    pick 123abc First commit
    edit 456def Add sensitive data
    pick 789ghi Some changes
    
  4. 修改暂停的提交
    当变基暂停后:
    • 重置该提交内容:
      git reset HEAD~
      
    • 手动删除敏感文件:
      rm <sensitive-file>
      
    • 重新提交修改:
      git add .
      git commit --amend -C HEAD
      
  5. 继续变基
    git rebase --continue
    
  6. 变基结束后强制推送
    git push origin main --force
    

D. 新建仓库并迁移内容

  1. 确定最后一次无敏感信息的提交
    通过 git log 查找记录,记下对应的提交编号 <commit-id>
  2. 克隆仓库到新文件夹
    git clone <旧仓库地址> new-repo-folder
    cd new-repo-folder
    
  3. 重置到最后一次良好提交
    git reset --hard <commit-id>
    
  4. 更改远程地址并推送到新仓库
    git remote set-url origin <新仓库地址>
    git push -u origin main
    
  5. 通知所有协作者切换到新仓库

E. 修改 .gitignore 预防未来问题

  1. 编辑 .gitignore 文件
    将敏感文件的路径添加到文件中,例如:
    <file-path>
    
  2. 提交 .gitignore 修改
    git add .gitignore
    git commit -m "Add sensitive files to .gitignore to prevent future commits"
    git push origin main
    
  3. 注意事项
    此方法仅用于预防未来敏感文件误提交,无法删除历史记录中的敏感信息。

总结与注意事项

  • 选择方法依据

    • 若敏感内容分布于整个历史记录,建议采用重写历史的方法(A 或 B),可确保彻底清除所有痕迹。
    • 若敏感内容仅出现在少数近期提交中,则交互式变基(C)操作简单且直观。
    • 若不需要保留历史记录,新建仓库(D)是最稳妥的做法。
    • 为防止未来误提交,则需及时更新 .gitignore(E),但这并不影响已有的历史。
  • 强制推送的影响
    上述大部分方法都会重写 Git 历史,推送后远程仓库历史将被覆盖。务必提前备份,并通知所有协作者重新同步仓库,否则可能导致团队协作出现混乱。

  • 平台适用性
    本文所有方法均适用于基于 Git 的任意代码托管平台,不局限于某一特定平台。

通过本文的详细说明和示例,开发者可以根据实际情况选择合适的方案,确保仓库在公开之前不包含任何敏感信息。希望这份技术博客对您的项目安全管理提供实用的指导与帮助!

· 阅读需 5 分钟
Kyle

Git 与 AtomGit 实践:维护者审核与合并变更请求

本教程旨在指导维护者如何有效地审核和合并变更请求,以确保项目的质量和一致性。

1. 审核Change Request

维护者收到Change Request后,应执行以下步骤:

  1. 查看变更内容

  2. 提出反馈或建议

    • 如果发现问题或有改进建议,可以在Change Request页面留言,要求贡献者进行相应修改。
  3. 确认无误后批准

    • 如果变更符合要求,点击"通过"/“不通过”按钮,确认Change Request。

2. 合并Change Request

审核通过后,维护者可以将贡献者的变更合并到上游仓库:

  1. 点击"合并"按钮

    • 在Change Request页面,点击页面右上角的"合并"按钮。
  2. 选择合并方式

    • 通常选择"创建合并提交"方式进行合并,确保所有变更记录完整保留。
  3. 确认合并信息

    • 检查合并信息无误后,点击确认完成操作。

3. 同步上游仓库更新

所有贡献者应定期同步上游仓库的最新更改,以保持与自己fork的仓库的同步。在终端/PowerShell中执行以下步骤: 以下内容是在你电脑的 my_open_source_contributions 仓库目录下执行。

  1. 添加上游仓库

    git remote add upstream git@atomgit.com:atomgit_operate/my_open_source_contributions.git
    
  2. 获取上游仓库的更新

    git fetch upstream/master
    
  3. 切换到主分支并合并

    git checkout master
    git merge upstream/master
    
  4. 推送更新到Fork仓库

    git push origin master
    
  5. 再次提交变更请求

    • 重复提交变更请求的步骤,确保所有更改都被正确记录和审核。

4. 最佳实践

  • 定期同步:保持本地仓库与上游仓库的同步,减少冲突发生。
  • 详细提交信息:每次提交都应有清晰、详细的说明,便于他人理解更改内容。
  • 内容审核:维护者应进行严格的内容审核,确保提交的质量。
  • 选择审核人:提交Change Request时,选择审核人(reviewers)来审核您的变更。
  • 书写清晰的PR描述:在提交Change Request时,提供详细的描述,说明更改的原因和内容,便于审核人员理解。

通过遵循这些步骤和最佳实践,维护者可以有效地管理和合并变更请求,确保项目的持续健康发展。

推荐阅读

如果你对本文内容感兴趣,或者希望了解更多相关知识,以下是一些推荐阅读的文章:

  1. Git 与 AtomGit 实践:从零到一,单用户操作单仓库

    • 详细介绍了如何从零开始使用 Git 和 AtomGit 进行单用户操作单仓库的完整流程,包括环境配置、创建仓库、提交更改等步骤。
  2. Git 与 AtomGit 实践:向上游仓库贡献内容

    • 详细介绍了如何向上游仓库贡献内容的完整流程,包括Fork、克隆、提交更改和提交变更请求等步骤。

通过阅读这些文章,你将能够更全面地了解如何使用 Git 和 AtomGit 进行开源项目的贡献和管理。希望这些资源对你有所帮助!

· 阅读需 10 分钟
Kyle

Git 与 AtomGit 实践:从零到一,单用户操作单仓库

本教程适用于 Windows、macOS 和 Linux 平台。

此任务主要是帮助用户在 AtomGit 上从零开始创建并管理一个单一仓库,涵盖单用户操作单仓库的最常用操作流程。

1、注册或登录 AtomGit

网址 https://atomgit.com

2、验证手机号码和邮箱的正确性

在 AtomGit 上产生内容前,需先验证手机号码和邮箱的正确性。如果没有验证过,在AtomGit网站上会有弹出提醒,如果没有弹出提醒,请按照以下步骤进行验证:

  • 点击AtomGit网站界面右上角的头像
  • 进入“个人中心”
  • 选择“基本信息”
  • 进入“帐号绑定”
  • 检查验证状态或修改手机号和邮箱

3、创建仓库

1)点击“+”按钮

  • 在 AtomGit 界面的右上角,点击“+”按钮。

2)新建代码库

  • 选择“新建代码库”。

3)填写代码库详细信息

  • 代码库名称:支持中英文。
  • 归属:默认是当前登录的账户。
  • 路径:只能包含字母、数字、''、'.'和'-',且必须以字母、数字或''开头。
  • 关联社区:(可选)。
  • 公开性:根据实际情况设置,本次练习作业需设置为公开。
  • 代码库描述:自行输入描述内容。
  • 创建README.md:系统会自动创建一个Markdown文件。
  • 创建 .gitignore:此选项为可选。
  • 添加开源许可证:根据实际情况选择一个,非常重要。

4)确认创建

  • 点击“确定”以完成代码库的创建。

4、Git 环境准备

1)检查Git环境

Windows:

  • 按下 Win 键打开开始菜单。
  • 输入 PowerShell
  • 在搜索结果中,右键点击 Windows PowerShell,选择 以管理员身份运行
  • 在弹出的提示中点击

MacOS:

  • 打开 终端(Terminal)应用。
  • 可以通过 Spotlight(按下 Command + 空格)搜索 "Terminal" 来打开。

Linux:

  • 打开终端(Terminal)。
  • 在大多数发行版中,可以使用快捷键 Ctrl + Alt + T 打开终端。

在终端/PowerShell 中输入以下命令并回车:

git --version

结果判断

  • 如果显示 Git 版本号(如 git version 2.x.x),表示 Git 已正确安装。
  • 如果出现错误信息,表示 Git 未安装。

2)安装Git

Windows:

  • 如果Git未安装,打开浏览器访问以下链接下载Git安装包: 下载Git-2.47.1-64-bit.exe
  • 下载完成后,解压并双击运行安装包。
  • 在安装向导中,依次点击 Next
  • Select Components 界面,确保所有选项均已勾选,以便后续操作更方便。
  • 继续点击 Next 直至安装完成。
  • 安装完成后,重新执行 检查Git环境 步骤以确认安装成功。

MacOS:

  • MacOS 通常预装了 Git。如需安装或更新,可以:
    • 通过 Homebrew 安装:brew install git
    • 或下载 Git 安装包:访问 Git 官网

Linux:

  • 大多数 Linux 发行版预装了 Git。如需安装,可以使用包管理器:
    • Ubuntu/Debian:sudo apt-get install git
    • Fedora:sudo dnf install git
    • CentOS:sudo yum install git

3)配置Git

  • 打开终端(Windows 用户使用 PowerShell)。
  • 执行以下命令生成SSH密钥:
    ssh-keygen -t rsa -C "your_email@example.com"
    
  • 按提示一路 Enter 键,使用默认设置生成SSH Key。
  • 复制SSH公钥:
    • 生成的SSH Key文件路径:
      • Windows:C:\Users\你的用户名\.ssh\id_rsa.pubC:\Users\你的用户名\.ssh\id_随机码.pub
      • MacOS/Linux:~/.ssh/id_rsa.pub
    • 使用以下命令查看公钥内容:
      • Windows:cat C:\Users\你的用户名\.ssh\id_rsa.pubcat C:\Users\你的用户名\.ssh\id_随机码.pub
      • MacOS/Linux:cat ~/.ssh/id_rsa.pub
    • 复制查看显示出来的公钥内容,后续将在AtomGit网站上使用。

4)在AtomGit网站上配置SSH Key

  • 在AtomGit网站上点击右上角头像->个人中心->安全中心SSH Keys->添加 SSH 公钥->将刚才复制的SSH Key粘贴到“公钥”文本框中->点击“确定”。

5)测试SSH Key是否生效

Windows/Linux/MacOS:

  • 在终端/PowerShell中输入下面命令并回车,如果看到"successfully",表明SSH Key配置成功。
    ssh -T git@atomgit.com
    

6)配置Git用户名和邮箱

Windows/Linux/MacOS:

  • 在终端/PowerShell中分别输入下面每行命令并回车,其中name和email的内容可以随便写,但是推荐和您的AtomGit账户名和邮箱一致。
    git config --global user.name "你的名字"
    git config --global user.email "你的邮箱"
    

5、本地操作仓库

1)获取仓库的 Git 地址

  • 在第三步创建的仓库页面,点击右上角的"克隆/下载"按钮。
  • 确保选择了"SSH"选项。
  • 页面会显示类似"git@atomgit.com:username/repository"格式的地址(注意:不要直接复制这里的示例,要使用你在 AtomGit 网站上看到的实际地址,其中 username 是你的 AtomGit 用户名,repository 是你的仓库名称)。
  • 点击地址右侧的复制按钮复制你的仓库 SSH 地址。

2)将仓库克隆到电脑本地

Windows:

  • 在 PowerShell 中执行(使用你从 AtomGit 网站上复制的实际仓库地址):
    git clone 在AtomGit网站上复制的仓库地址
    

MacOS/Linux:

  • 在终端中执行(使用你从 AtomGit 网站上复制的实际仓库地址):
    git clone 在AtomGit网站上复制的仓库地址
    

3)进入仓库目录

Windows:

  • 在 PowerShell 中执行(使用你的实际仓库名称):
    cd 你的仓库名称
    

MacOS/Linux:

  • 在终端中执行(使用你的实际仓库名称):
    cd 你的仓库名称
    

4)打开目录并在里添加文件或者更新文件

Windows:

  • 在 PowerShell 中执行:
    start .
    

MacOS/Linux:

  • 请使用合适的编辑器操作目录的内容。

对于所有平台:

 - 此时你可以在当前目录下:
   - 添加新的文件或子文件夹
   - 删除已有的文件或子文件夹
   - 修改已有文件的内容
   - 重命名文件或子文件夹
 
 例如:
 - 添加一个新文件test.txt,写入"hello world"
 - 创建一个新的子文件夹docs
 - 修改README.md文件的内容
 - 删除不需要的文件

5)提交文件

Windows/Linux/MacOS:

  • 在终端/PowerShell中执行以下命令提交文件:
    git add .
    git commit -m "在这里写一句你喜欢的或者能表达本次更新内容的提交注释"
    git push
    

6)查看更新结果

  • 现在你可以访问 AtomGit 网站查看你的仓库更新了。

至此,你已经成功迈出了使用 Git 的第一步。随着不断练习,你会发现 Git 是一个非常强大且有趣的工具。期待看到你在 AtomGit 上创造出更多精彩的项目!

推荐阅读

如果你对本文内容感兴趣,或者希望了解更多相关知识,以下是一些推荐阅读的文章:

  1. Git 与 AtomGit 实践:向上游仓库贡献内容

    • 详细介绍了如何向上游仓库贡献内容的完整流程,包括Fork、克隆、提交更改和提交变更请求等步骤。
  2. Git 与 AtomGit 实践:维护者审核与合并变更请求

    • 介绍了维护者如何审核和合并变更请求的流程,确保项目的质量和一致性。

通过阅读这些文章,你将能够更全面地了解如何使用 Git 和 AtomGit 进行开源项目的贡献和管理。希望这些资源对你有所帮助!

· 阅读需 8 分钟
Kyle

Git 与 AtomGit 实践:向上游仓库贡献内容

主要介绍了如何向上游仓库或其他开源项目贡献内容,以参与开源社区建设。

我们将以 my_open_source_contributions 作为上游仓库,如何向此仓库贡献内容为例,介绍如何参与开源项目。

1、账号准备与环境检查

提示:为确保顺利完成本练习,在操作前请先完整阅读 《Git 与 AtomGit 实践:从零到一,单用户操作单仓库》,熟悉基本概念和操作后再继续。

1)注册 AtomGit 账号

2)验证手机号和邮箱

3)Git 环境配置

2. Fork(分叉/复制)上游仓库

贡献者在开始贡献前,需要先将上游仓库Fork到自己的AtomGit账号下:

  1. 打开您的浏览器,访问上游仓库页面:https://atomgit.com/atomgit_operate/my_open_source_contributions
  2. 在仓库页面的右上角,点击"Fork"按钮,将仓库Fork到您的账户中。

3. 克隆Fork后的仓库

在本地机器上,请按照您的操作系统选择相应步骤操作,请将您的用户名替换为您的AtomGit用户名。

Windows 用户:

  1. 打开PowerShell

    • 点击"开始"菜单,输入"PowerShell"
    • 点击"Windows PowerShell"以打开它
  2. 执行克隆命令

    • 在PowerShell窗口中,输入以下命令并按回车执行:
      git clone git@atomgit.com:您的用户名/my_open_source_contributions.git
      
  3. 进入仓库目录

    cd my_open_source_contributions
    
  4. 打开项目目录

    start .
    

macOS 用户:

  1. 打开终端

    • 使用 Spotlight(Command + 空格)搜索"Terminal"
    • 点击"Terminal"应用打开
  2. 执行克隆命令

    git clone git@atomgit.com:您的用户名/my_open_source_contributions.git
    
  3. 进入仓库目录

    cd my_open_source_contributions
    
  4. 打开项目目录

    open .
    

Linux 用户:

  1. 打开终端

    • 使用快捷键 Ctrl + Alt + T
    • 或从应用程序菜单中打开终端
  2. 执行克隆命令

    git clone git@atomgit.com:您的用户名/my_open_source_contributions.git
    
  3. 进入仓库目录

    cd my_open_source_contributions
    
  4. 打开项目目录

    • 使用您的习惯编辑器或文件管理器打开当前目录:

4. 增删改文件并提交更改

  1. 创建和编辑文件

    • 在项目目录中,使用任意文本编辑器(如VS Code、Sublime Text、记事本等)
    • 创建一个新文件,您可以自由选择文件名和类型,例如:
      • my_story.txt
      • project_ideas.md
      • notes.py
      • config.json
      • data.yaml
    • 在新文件中添加任意内容,比如:
      这是我开源贡献的历程
      让我们一起开源贡献
      
    • 编辑完成后保存更改
  2. 提交更改

5. 推送到Fork仓库

将本地的更改推送到自己Fork的仓库:

在终端/PowerShell中执行:

git push origin master

6. 提交变更请求(Change Request)

  1. 登录AtomGit

    • 打开您的浏览器,访问AtomGit并登录您的账户。
  2. 导航至Fork的仓库

  3. 提交Change Request

    • 点击仓库页面左侧菜单中的"变更请求"菜单。在"新建变更请求"页面,确保"来源"选择为您的账户下的Fork仓库的master分支。默认已经正确选择。目的分支选择为"上游仓库的master分支"。
    • 填写Change Request的标题和描述,确保清晰说明所做的更改。例如:
      • 标题:添加新功能和开源寄语
      • 描述:本次提交包括添加“xxx”文件以及在main.txt中添加我的开源寄语,旨在丰富项目内容并表达对开源的支持。
      • 审核人:选择审核人(reviewers)来审核您的变更。
  4. 提交并等待审核

    • 点击"确定"按钮,完成变更请求的创建,等待维护者的审核。

注意:作为贡献者角色,到此完成了向上游仓库贡献内容。

7. 最佳实践

  • 定期同步:保持本地仓库与上游仓库的同步,减少冲突发生。
  • 详细提交信息:每次提交都应有清晰、详细的说明,便于他人理解更改内容。
  • 内容审核:维护者应进行严格的内容审核,确保提交的质量。
  • 选择审核人:提交Change Request时,选择审核人(reviewers)来审核您的变更。
  • 书写清晰的Change Request描述:在提交Change Request时,提供详细的描述,说明更改的原因和内容,便于审核人员理解。

推荐阅读

如果你对本文内容感兴趣,或者希望了解更多相关知识,以下是一些推荐阅读的文章:

  1. Git 与 AtomGit 实践:从零到一,单用户操作单仓库

    • 详细介绍了如何从零开始使用 Git 和 AtomGit 进行单用户操作单仓库的完整流程,包括环境配置、创建仓库、提交更改等步骤。
  2. Git 与 AtomGit 实践:维护者审核与合并变更请求

    • 介绍了维护者如何审核和合并变更请求的流程,确保项目的质量和一致性。

通过阅读这些文章,你将能够更全面地了解如何使用 Git 和 AtomGit 进行开源项目的贡献和管理。希望这些资源对你有所帮助!

· 阅读需 20 分钟
Kyle
Hex

Git 与 AtomGit 实践:团队工作流程的探讨与实践

本教程适用于所有使用 Git 进行团队协作的开发团队。

在软件开发中,选择合适的工作流对于提高团队效率和代码质量至关重要。本文将首先深入探讨团队工作流的理论基础,然后通过一个完整的项目实践示例,展示如何在 AtomGit 上应用这套工作流。

理论篇:工作流设计

1、分支策略

在我们的工作流中,主要维护两个长期分支:

  • master: 生产环境分支,始终保持代码的稳定性和可部署状态。
  • testing: 测试环境分支,用于集成和验证待测试的功能。

分支策略设计考虑

  1. 为何不使用传统的 master/production 分支?

    • 单一测试环境限制:由于团队只有一个办公网测试环境,直接提测多个 feature 分支可能导致混乱和冲突。
    • 简化分支管理:通过设立 testing 分支作为统一的测试入口,简化了分支流转和管理的复杂度。
  2. 分支权限控制

    • master 分支:仅允许通过合并请求(Merge Request, MR)进行代码合并,确保代码的稳定性和审查的彻底性。
    • testing 分支:允许开发人员直接推送代码,便于快速集成和测试。
    • 临时分支:如 feature 分支或 hotfix 分支,由创建者拥有完全权限,便于独立开发和管理。

2、开发场景与分支流转

在日常开发中,我们主要面临以下几种情形:

  1. 新功能开发
  2. 线上 BUG 修复
  3. 运营文案修改

每种情形有其特定的分支流转流程,确保开发的有序性和代码的稳定性。

2.1 新功能开发

完整流程:

  1. master 创建 feature 分支
    • 例如:feature/playlist
  2. 在 feature 分支上进行开发
    • 完成功能开发后进行本地测试
  3. 提交第一个 MR 到 testing 分支
    • 必须进行 Code Review
    • 解决 Review 意见
    • 合并到 testing 环境进行全面测试
  4. 测试过程中发现问题
    • 继续在 feature 分支上修复问题
    • 提交新的 commit 并更新 MR
  5. 测试通过后提交新的 MR 到 master
    • 再次进行 Code Review
    • 确认无误后合并到 master
  6. 合并后操作
    • 打 tag 发布代码
    • 删除 feature 分支,保持分支整洁

2.2 线上 BUG 修复

根据 BUG 的紧急程度,分为两种修复路径:

  1. 紧急修复流程

    • master 创建 hotfix 分支,例如:hotfix/player-crash
    • 完成修复后直接提交 MR 到 master
    • 经过 Code Review 后紧急合并上线
    • 另外提交 MR 到 testing 分支,同步修复
    • 删除 hotfix 分支,避免分支膨胀
  2. 常规修复流程

    • master 创建 hotfix 分支,例如:hotfix/ui-glitch
    • 完成修复后先提交 MR 到 testing 分支
    • testing 环境中进行测试验证
    • 测试通过后再提交 MR 到 master 分支
    • 合并发布后删除 hotfix 分支

2.3 运营文案修改

文案修改流程与 BUG 修复类似,但主要侧重于内容的准确性和时效性:

  1. master 创建文案分支
    • 例如:content/welcome-text-update
  2. 在文案分支上进行修改
    • 确保修改前后内容对比清晰
  3. 提交 MR 到 testing 分支
    • 进行文案验证和多轮校对
  4. 验证通过后提交 MR 到 master
    • 经过 Code Review 后合并发布
  5. 合并后操作
    • 删除文案分支,保持分支整洁

3、MR 管理规范

3.1 MR 提交规范

  1. 标题格式

    • 功能:[Feature] Add playlist function
    • 修复:[Fix] Resolve player crash
    • 文案:[Content] Update welcome text
  2. 描述要求

    • 功能说明/修复内容:简要描述此次更改的目的和范围。
    • 相关的 Issue 链接:关联对应的任务或问题,便于追踪。
    • 测试用例/测试结果:说明如何测试此次更改,确保功能或修复的有效性。
    • 需要注意的事项:任何需要团队成员了解的特别信息。
  3. Code Review 要点

    • 代码规范性:遵循团队的代码风格和最佳实践。
    • 业务逻辑正确性:确保代码的逻辑符合需求和预期。
    • 性能影响评估:评估此次更改是否对系统性能有负面影响。
    • 测试覆盖情况:确保新增或修改的功能配有充分的测试。

3.2 MR 状态流转

  1. 待审核

    • MR 提交后处于初始状态。
    • 指定审核人员,添加必要的标签。
  2. 审核中

    • 审核人员开始审查代码,提出修改意见。
    • 开发者根据反馈进行修改,更新 MR。
    • 可能经历多轮反馈和修改,直至满足审核要求。
  3. 待合并

    • 审核通过,等待合并操作。
    • 检查是否存在合并冲突,如有需先解决。
  4. 已合并/已关闭

    • MR 成功合并到目标分支,或因特殊原因关闭。
    • 合并后自动触发相应的发布流程(如有配置 CI/CD)。

4、关键规范与约定

4.1 分支命名规范

保持分支命名的一致性和可读性,便于识别和管理。

  1. 功能分支

    • 格式feature/name-description
    • 示例feature/playlist-management
  2. 修复分支

    • 格式hotfix/issue-description
    • 示例hotfix/player-crash-fix
  3. 文案分支

    • 格式content/page-description
    • 示例content/welcome-page-update

4.2 提交信息规范

采用统一的提交信息格式,便于历史追踪和自动化工具解析。

  1. 格式要求

    <type>(<scope>): <subject>
    
    <body>
    
    <footer>
    
  2. 类型说明

    • feat: 新功能
    • fix: BUG修复
    • docs: 文档更新
    • style: 格式调整(不影响代码逻辑)
    • refactor: 重构(不增加功能或修复BUG)
    • test: 测试相关
    • chore: 构建变动或工具更新

5、常见问题处理

  1. 多功能并行开发

    • 每个功能使用独立的 feature 分支,避免相互干扰。
    • 通过 testing 分支统一管理测试,确保所有功能在同一测试环境中集成。
    • 按照优先级顺序分别合并到 master,保持发布的有序性。
  2. 测试环境损坏

    • 可从 master 分支重新创建 testing 分支,确保测试环境的可用性。
    • 需要重新合并待测功能,确保所有必要的变更被包含。
  3. 合并冲突处理

    • master 分支为基准解决冲突,确保线上代码的稳定性。
    • 在解决冲突前,与相关团队成员沟通,避免重复和错误修改。
    • 使用 Git 的冲突解决工具,逐步排查并解决冲突。

实践篇:完整示例

项目背景

为了更好地理解上述工作流,下面通过一个具体的项目实践示例来展示其应用。

项目名称:MusicApp

项目需求

  1. 开发新的播放列表功能
  2. 修复播放器中的一个紧急 BUG
  3. 更新欢迎页的文案内容

实践步骤

1. 新功能开发

需求:开发一个新的播放列表功能,允许用户创建、编辑和删除播放列表。

步骤详解

  1. 创建功能分支

    # 切换到 master 分支,确保基于最新代码
    git checkout master
    git pull origin master
    # 创建并切换到 feature 分支
    git checkout -b feature/playlist
    

    注释

    • git checkout master:切换到主分支,确保从最新的代码开始。
    • git pull origin master:拉取远程主分支的最新更改,避免分支落后。
    • git checkout -b feature/playlist:创建并切换到新的功能分支,后续所有开发在此分支进行。
  2. 开发功能并提交

    # 添加所有更改到暂存区
    git add .
    # 提交更改,采用规范的提交信息
    git commit -m "feat: add playlist feature"
    # 推送分支到远程仓库
    git push origin feature/playlist
    

    注释

    • git add .:将当前目录下所有更改添加到暂存区,准备提交。
    • git commit -m "feat: add playlist feature":提交更改,并添加清晰的提交信息,描述此次更改的目的。
    • git push origin feature/playlist:将本地的 feature 分支推送到远程仓库,以便团队成员进行 Code Review 和协作。
  3. 提交 MR 到 testing

    • 在 AtomGit 上创建 MR
      • 选择 feature/playlist 分支为源分支,testing 为目标分支。
    • 指定 Code Review 人员
      • 选择负责审查代码的团队成员,确保代码质量。
    • 解决 Review 意见并更新 MR
      • 根据审查意见在 feature 分支上进行修改,重复推送和更新 MR,直至审查通过。
  4. 测试通过后提交 MR 到 master

    • 再次进行 Code Review
      • 在合并到 master 前,进行最后的代码审查,确保无遗漏。
    • 确认无误后合并到 master
      • 通过审查后,将功能分支合并到 master 分支。
  5. 合并后操作

    # 切换回 master 分支
    git checkout master
    # 拉取最新的 master 分支代码
    git pull origin master
    # 合并 feature 分支到 master
    git merge feature/playlist
    # 打 tag 标记发布版本
    git tag -a v1.1.0 -m "Release playlist feature"
    # 推送 master 分支和 tags 到远程仓库
    git push origin master --tags
    
    # 删除本地 feature 分支
    git branch -d feature/playlist
    # 删除远程 feature 分支
    git push origin --delete feature/playlist
    

    注释

    • git checkout mastergit pull origin master:确保本地 master 分支与远程同步。
    • git merge feature/playlist:将功能分支的更改合并到 master
    • git tag -a v1.1.0 -m "Release playlist feature":为此次发布打上版本标签,便于版本管理和回溯。
    • git push origin master --tags:将 master 分支和标签推送到远程仓库。
    • git branch -d feature/playlistgit push origin --delete feature/playlist:删除本地和远程的 feature 分支,保持分支整洁。

2. BUG 修复

需求:修复播放器中的一个紧急 BUG,导致部分用户无法正常播放音频。

步骤详解

  1. 创建修复分支

    # 切换到 master 分支
    git checkout master
    # 拉取最新的 master 分支代码
    git pull origin master
    # 创建并切换到 hotfix 分支
    git checkout -b hotfix/player-crash
    

    注释

    • git checkout mastergit pull origin master:确保基于最新的稳定代码进行修复。
    • git checkout -b hotfix/player-crash:创建一个 hotfix 分支,专门用于修复紧急 BUG。
  2. 修复 BUG 并提交

    # 添加修复后的代码到暂存区
    git add .
    # 提交修复,采用规范的提交信息
    git commit -m "fix: player crash issue"
    # 推送修复分支到远程仓库
    git push origin hotfix/player-crash
    

    注释

    • git add .:将修复后的文件添加到暂存区。
    • git commit -m "fix: player crash issue":提交修复,明确描述此次更改的目的。
    • git push origin hotfix/player-crash:将修复分支推送到远程仓库,以便进行 MR 和快速上线。
  3. 如非紧急,先提交 MR 到 testing

    • 在 AtomGit 上创建 MR
      • 选择 hotfix/player-crash 分支为源分支,testing 为目标分支。
    • 进行测试验证
      • testing 环境中验证 BUG 是否已修复,确保稳定性。
  4. 测试通过后提交 MR 到 master

    • 进行 Code Review
      • 审查修复代码,确保没有遗漏或引入新问题。
    • 合并发布 MR
      • 通过审查后,将修复合并到 master 分支,并进行发布。
  5. 合并后操作

    # 切换回 master 分支
    git checkout master
    # 拉取最新的 master 分支代码
    git pull origin master
    # 合并 hotfix 分支到 master
    git merge hotfix/player-crash
    # 推送 master 分支到远程仓库
    git push origin master
    
    # 删除本地 hotfix 分支
    git branch -d hotfix/player-crash
    # 删除远程 hotfix 分支
    git push origin --delete hotfix/player-crash
    

    注释

    • git checkout mastergit pull origin master:确保本地 master 分支与远程同步。
    • git merge hotfix/player-crash:将修复分支的更改合并到 master
    • git push origin master:将 master 分支的最新更改推送到远程仓库。
    • git branch -d hotfix/player-crashgit push origin --delete hotfix/player-crash:删除本地和远程的 hotfix 分支,保持分支整洁。

3. 文案更新

需求:更新应用内的欢迎页文案,使其更加友好和简洁。

步骤详解

  1. 创建文案分支

    # 切换到 master 分支
    git checkout master
    # 拉取最新的 master 分支代码
    git pull origin master
    # 创建并切换到文案分支
    git checkout -b content/welcome-text-update
    

    注释

    • git checkout mastergit pull origin master:确保基于最新的稳定代码进行文案更新。
    • git checkout -b content/welcome-text-update:创建一个内容更新分支,专门用于文案修改。
  2. 更新文案并提交

    # 编辑 welcome.md 或相应的文案文件
    # 添加修改后的文件到暂存区
    git add welcome.md
    # 提交更改,采用规范的提交信息
    git commit -m "content: update welcome message"
    # 推送文案分支到远程仓库
    git push origin content/welcome-text-update
    

    注释

    • 编辑相关文案文件,确保内容准确且符合需求。
    • git add welcome.md:将修改后的文案文件添加到暂存区。
    • git commit -m "content: update welcome message":提交更改,描述此次文案更新的目的。
    • git push origin content/welcome-text-update:将文案分支推送到远程仓库,以便进行 MR 和文案验证。
  3. 提交 MR 到 testing

    • 在 AtomGit 上创建 MR
      • 选择 content/welcome-text-update 分支为源分支,testing 为目标分支。
    • 进行文案验证
      • 由运营团队或相关人员进行文案审核,确保内容的准确性和合适性。
  4. 验证通过后提交 MR 到 master

    • 进行 Code Review
      • 审查文案更新,确保没有语法或内容上的错误。
    • 合并发布
      • 通过审核后,将文案分支合并到 master 分支,并进行发布。
  5. 合并后操作

    # 切换回 master 分支
    git checkout master
    # 拉取最新的 master 分支代码
    git pull origin master
    # 合并文案分支到 master
    git merge content/welcome-text-update
    # 推送 master 分支到远程仓库
    git push origin master
    
    # 删除本地文案分支
    git branch -d content/welcome-text-update
    # 删除远程文案分支
    git push origin --delete content/welcome-text-update
    

    注释

    • git checkout mastergit pull origin master:确保本地 master 分支与远程同步。
    • git merge content/welcome-text-update:将文案分支的更改合并到 master
    • git push origin master:将 master 分支的最新更改推送到远程仓库。
    • git branch -d content/welcome-text-updategit push origin --delete content/welcome-text-update:删除本地和远程的文案分支,保持分支整洁。

效果验证

通过这套工作流,我们实现了以下目标:

  • 功能开发的独立性:每个功能在独立的分支上开发,避免互相影响。
  • BUG 修复的及时性:紧急 BUG 能够迅速修复并上线,保持产品稳定。
  • 文案更新的规范性:所有文案修改经过严格的审核和验证,确保内容质量。
  • 分支管理的清晰性:通过明确的分支命名和管理策略,团队成员能够快速理解和操作。

推荐阅读

  1. Git 与 AtomGit 实践:从零到一

    • 适合 Git 初学者的入门指南。
  2. Git 与 AtomGit 实践:贡献协作

    • 详细介绍团队协作的最佳实践。
  3. Git 与 AtomGit 实践:项目维护

    • 详细介绍代码审查和合并的最佳实践。

通过这套工作流程,团队可以更高效地进行协作开发。希望本文对你有所帮助!

· 阅读需 10 分钟
Kyle

引言

你是否曾想参与开源项目但不知从何下手?或者对开源协作流程感到困惑?本文将通过一个真实的案例,带你体验开源协作的完整流程。我们以 OpenLinkSaaS(凌鲨)项目为例,详细讲解如何从一个普通用户成长为开源贡献者。

OpenLinkSaaS 项目简介

OpenLinkSaaS(凌鲨)是一个正在基金会孵化筹备期的开源项目,旨在为软件开发团队提供效能提升工具。项目目前托管在 AtomGit 平台上,其中最重要的产品之一就是 AtomGit 桌面客户端,这是一个由 OpenLinkSaaS 开发和维护的开源工具,为开发者提供了便捷的代码托管和版本控制体验。

AtomGit 桌面客户端简介

AtomGit 桌面客户端是 OpenLinkSaaS 项目的核心产品,它为开发者提供了图形化的界面来管理代码仓库、执行版本控制操作,使得代码协作变得更加简单直观。作为一个开源项目,它不仅服务于开发者,也欢迎开发者参与其改进和功能扩展。

开源协作的三个角色

在开源项目中,通常存在三类主要角色:

  1. 使用者:项目的最终用户
  2. 贡献者:为项目贡献代码的开发者
  3. 维护者:负责项目管理和代码审核的管理员

让我们通过一个完整的需求实现流程,来看看这三个角色是如何协作的。

实战步骤

1. 提出需求(使用者视角)

作为一名 AtomGit 桌面客户端的用户,当你发现了新的需求或改进建议时,有两种便捷的方式提交反馈:

方式一:通过客户端直接反馈

  1. 打开 AtomGit 桌面客户端
  2. 点击右上角的反馈按钮"😊"
  3. 你将被直接带到项目的 Issue 反馈区域

方式二:在代码仓库页面提交

  1. 访问项目仓库:https://atomgit.com/openlinksaas-org/desktop
  2. 点击 "Issues" 标签页
  3. 创建新的 Issue,描述你的需求

提示:无论选择哪种方式,请尽可能详细地描述你的需求,包括:

  • 具体的使用场景
  • 期望达到的效果
  • 如果可能的话,提供相关的截图或示例

这样的反馈更容易被开发者理解和采纳!

2. 贡献代码(贡献者视角)

第一步:环境准备

在开始贡献代码之前,请确保你已经:

  • 安装了 Git
  • 注册了 AtomGit 账号
  • 安装了必要的开发环境(Node.js、Rust 等)
  • 阅读了项目的开发文档

第二步:需求理解

在开始编码之前,最重要的是充分理解需求:

  1. 仔细阅读 Issue 描述内容
  2. 如有不明确的地方,在 Issue 下评论与提出者讨论
  3. 确保你的理解与用户需求一致

第二步:Fork 项目

- 访问 https://atomgit.com/openlinksaas-org/desktop
- 点击右上角的 "Fork" 按钮
- 项目将被复制到你的个人仓库

第三步:克隆和开发

你可以选择以下两种方式之一进行开发:

方式一:使用 AtomGit 桌面客户端(推荐)
  1. 打开 AtomGit 桌面客户端
  2. 点击"克隆仓库",输入你 Fork 后的仓库地址
  3. 选择本地存储路径
  4. 进行代码修改
  5. 在客户端中提交修改,填写提交信息

方式二:使用 Git 命令行
# 克隆仓库
git clone git@atomgit.com:kyle/desktop.git

# 创建新分支( 可选,默认为 master 分支)
git checkout -b feature-xxx

# 提交修改
git add .
git commit -m "feat: add new feature #123"
git push origin feature-xxx

提交规范

一个好的代码提交信息应该包含:

  • 修改类型:feat/fix/docs/style/refactor 等
  • 简要说明修改内容
  • 关联的 Issue 编号,如 #123

示例:

feat: enable minapp feature #123

- Changed enable_minapp flag to true in vendor_config.rs
- Added new configuration options for minapp
- Updated related documentation

3. 代码审核(维护者视角)

第一步:需求确认

作为维护者,首要任务是确保理解用户需求:

  1. 仔细阅读相关 Issue 的原始需求描述
  2. 查看需求讨论过程中的所有评论
  3. 确认提交的代码是否完全满足用户需求

第二步:代码审查(CR)

在 AtomGit 代码托管平台上进行变更请求审查:

  1. 检查代码实现逻辑
  2. 审核代码规范性
  3. 测试功能是否符合预期
  4. 提供审查意见:
    • 如需修改,在相关代码处添加评论
    • 若代码符合要求,批准变更请求
  5. 决定是否合并(Merge)到主分支

第三步:编译发版

完成代码合并后,需要进行版本发布:

  1. 更新版本号
  2. 编译新版本
  3. 运行完整测试套件
  4. 编写版本更新说明
  5. 发布新版本

第四步:完成反馈

有多种方式可以完成反馈循环:

方式一:在 Issue 中回复
  1. 访问原始 Issue
  2. 回复用户功能已实现
  3. 说明具体更新的版本号
  4. 手动关闭 Issue
方式二:通过 Commit Message 关闭

在合并时的 commit message 中使用关键词:

feat: implement new feature (Closes #123)

fix: resolve bug (Fixed #123)

支持的关键词包括:

  • close, closes, closed
  • fix, fixes, fixed
  • resolve, resolves, resolved

维护者检查清单

  • 确认需求理解准确
  • 代码实现完整正确
  • 测试用例覆盖充分
  • 文档更新完备
  • 代码风格符合规范
  • 性能影响评估
  • 安全性评估
  • 版本发布成功
  • 用户反馈完成

注意事项

  • 保持与用户和贡献者的良好沟通
  • 及时响应代码审查请求
  • 定期整理和归档已完成的 Issue
  • 维护项目更新日志
  • 确保版本发布流程规范

成果验证

当新版本发布后,用户就能收到更新提醒,体验到新功能了!

小贴士

  1. 提交 Issue 前先搜索是否已存在类似需求
  2. 代码提交前确保通过本地测试
  3. CR 描述要清晰,便于维护者理解

结语

通过这个实例,你应该对开源协作流程有了直观的认识。参与开源项目不仅能提升技术能力,还能结识志同道合的开发者。希望这篇教程能帮助你迈出参与开源的第一步!

欢迎来到 【AtomGit】 关注 OpenLinkSaaS 项目 或者在上面探索更多开源项目,开启你的开源之旅,期待你的贡献!

常见问题解答(FAQ)

Q1: 如何处理代码冲突?

当遇到代码冲突时:

  1. 先同步上游仓库的最新代码
  2. 在本地解决冲突
  3. 提交解决后的代码

Q2: CR被要求修改怎么办?

  1. 仔细阅读审核意见
  2. 在原分支上进行修改
  3. 提交新的更改
  4. CR会自动更新

Q3: 如何撤销已提交的CR?

  1. 可以在CR页面点击"Close pull request"按钮关闭CR
  2. 如需重新提交,可以创建新的CR

· 阅读需 6 分钟
Kyle

教程最终效果预览:https://kaiyuanxiaobing.atomgit.net/my-blog-website/

最终效果预览

目录结构参考

完成后的项目结构应该类似这样:

项目结构

准备工作

在开始之前,我们需要安装和配置一些必要的工具:

1. 账号准备

AtomGit 首页

2. 必要工具安装

Git 安装

根据你的操作系统选择对应的安装方式:

  • Windows: 下载并安装 Git for Windows
  • macOS: 使用 Homebrew 安装:brew install git
  • Linux: 使用包管理器安装,如 Ubuntu:sudo apt-get install git

Hugo 安装

选择适合你系统的安装方式:

  • Windows: 下载并安装 Hugo for Windows
  • macOS: 使用 Homebrew:brew install hugo
  • Linux: 使用包管理器安装,如 Ubuntu Snap:sudo snap install hugo

3. Git 配置

打开终端,配置你的 Git 用户信息:

git config --global user.email "your.email@example.com"
git config --global user.name "Your Name"

1. 创建 AtomGit 仓库

我们需要创建两个仓库:

  1. my-blog-source: 存放博客源码
  2. my-blog-website: 存放生成的静态网站文件(需设为公开)

创建新仓库

重要:my-blog-website 仓库必须设置为"公开"类型,否则 Pages 将无法正常访问。

设置仓库为公开

2. 配置 SSH 访问

  1. 按照 AtomGit 官方文档 配置 SSH 密钥
  2. 获取仓库的 SSH URL

获取仓库 URL

  1. 克隆源码仓库到本地:
git clone git@atomgit.com:你的用户名/my-blog-source.git
cd my-blog-source

克隆仓库

3. 初始化 Hugo 站点

  1. 在 my-blog-source 目录下初始化 Hugo:
hugo new site . --force

初始化 Hugo

  1. 安装主题 从 Hugo 主题库 选择一个主题,这里我们使用 ananke 主题:
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke

安装主题

  1. 配置主题 编辑 hugo.toml 文件:
theme = "ananke"

配置主题

4. 创建和预览内容

  1. 创建新文章:
hugo new posts/my-first-post.md

创建文章

  1. 编辑文章内容:

编辑文章

  1. 本地预览:
hugo server -D

本地预览命令

访问 http://localhost:1313 查看效果:

预览效果

5. 部署到 AtomGit Pages

  1. 初始化网站目录并配置输出路径:
cd ..
mkdir my-blog-website
cd my-blog-source

编辑 hugo.toml 文件,添加输出路径配置:

publishDir = "../my-blog-website"
  1. 初始化网站仓库:
cd ../my-blog-website
git init
git remote add origin git@atomgit.com:你的用户名/my-blog-website.git
  1. 编译并发布:
cd ../my-blog-source
hugo
cd ../my-blog-website
git add .
git commit -m "Initial website deployment"
git push -u origin master
  1. 开启 Pages 功能: 在 AtomGit 仓库设置中启用 Pages 功能:

开启 Pages

自动化部署脚本

为了简化部署过程,你可以使用以下自动化脚本:

Windows 脚本 (update_blog.bat)

@echo off
setlocal EnableDelayedExpansion

:: 配置信息
set SOURCE_DIR=my-blog-source
set WEBSITE_DIR=my-blog-website

:: 执行部署
cd %SOURCE_DIR% || (
    echo Failed to enter source directory
    exit /b 1
)

hugo || (
    echo Hugo build failed
    exit /b 1
)

git add .
git commit -m "Update blog source" || (
    echo No changes to commit in source
)
git push origin master || (
    echo Failed to push source
    exit /b 1
)

cd ..\%WEBSITE_DIR% || (
    echo Failed to enter website directory
    exit /b 1
)

git add .
git commit -m "Update blog content" || (
    echo No changes to commit in website
)
git push origin master || (
    echo Failed to push website
    exit /b 1
)

echo Deployment completed successfully!

Unix 脚本 (update_blog.sh)

#!/bin/bash

# 配置信息
SOURCE_DIR="my-blog-source"
WEBSITE_DIR="my-blog-website"

# 错误处理函数
handle_error() {
    echo "Error: $1"
    exit 1
}

# 执行部署
cd $SOURCE_DIR || handle_error "Failed to enter source directory"

hugo || handle_error "Hugo build failed"

git add .
git commit -m "Update blog source" || echo "No changes to commit in source"
git push origin master || handle_error "Failed to push source"

cd ../$WEBSITE_DIR || handle_error "Failed to enter website directory"

git add .
git commit -m "Update blog content" || echo "No changes to commit in website"
git push origin master || handle_error "Failed to push website"

echo "Deployment completed successfully!"

提示:使用脚本前,请确保替换了相应的用户名和路径。

故障排除

  • Pages 部署后无法访问:检查仓库是否为公开类型,确保 Pages 功能已启用。
  • Hugo 构建错误:确认 Hugo 安装正确,检查主题配置。
  • Git 推送失败:检查 SSH 密钥配置,确保网络连接正常。

参考资源


现在你已经成功搭建了自己的静态博客网站!遇到问题,可以再次反馈

· 阅读需 6 分钟
Kyle

0、前提条件

可能有的人是首次使用,那么我们可以尽量全面介绍,照顾到细节。 为了简化操作的复杂度,尽量全部用 GUI 的形式来操作。

  • Windows11
  • Python3
  • NodeJS v20.12.2
  • Git Client:OpenLinkSaaS

1、安装所需软件和运行环境配置

1)安装 Python

推荐使用 Anaconda 进行 Python 开发,它集成了 Python 解释器和常用的科学计算库,方便管理环境和软件包,尤其适合数据科学、机器学习等领域。

image.png
image.png
image.png

  • 验证 Python 安装成功

image.png

2)安装NodeJS

image.png
image.png
image.png
image.png

  • 验证 NodeJS 安装成功

image.png

3)安装OpenLinkSaaS

image.png
image.png
image.png

2、下载开源项“开放原子开源活动贡献榜”

2.1、用你的 AtomGit 登录 OpenLinkSaaS

image.png
image.png

2.2、设置 SSH,让你的本地电脑和AtomGit 进行通信

  • 生成 SSH Key

image.png

  • 复制 SSH Key 公钥

image.png

  • 在 AtomGit 中设置此公钥

image.png

2.3、推荐使用 SSH 方式下载克隆

image.png
image.png
image.png
image.png

3、数据转换

进入“开放原子开源活动贡献榜”项目的“src”目录

image.png

在“src”目录下,打开终端

image.png

安装python 项目的依赖包:pandas

pip install pandas

image.png

执行命令python3 .\convert.py

4、项目test & build

1) test

进入“开放原子开源活动贡献榜”根目录,并且打开终端

注意,以下操作都在 master分支操作。

  • 安装 Nodejs 的 NPM 包依赖,执行下面命令

npm install

  • 上线前本地查看数据和站点的渲染,执行命令

    用于在开发模式下运行应用。 打开 http://localhost:3000 在浏览器中查看。如果你进行了编辑,页面将重新加载。 你还将在控制台中看到任何 lint 错误。

npm start

image.png

2) 推送到 master 分支

此时从本地看数据和页面如果都没有什么问题,那么可以先推送到 master 分支。

这里推荐两种操作方式二选一。

方式一:用 OpenLinkSaaS 操作

  • 添加并提交有变化的文件

    image.png

  • 把提交了变更的数据推送到 AtomGit 远端仓库

    image.png

  • 检查更新成功

    image.png
    image.png

方式二:用 Git 命令操纵

分别执行命令

git add ./
git commit -m '更新说明'
git push 

3) build

  • npm run build,此时会产生的静态文件都将会在 "build目录"中。

4) 切换到build分支,执行静态文件编译

从此处开始,操作都将会在build 分支操作。

4-1)这里推荐两种操作方式二选一。

方式一:用 OpenLinkSaaS 操作

image.png

  • 接着手动删除“build目录”和“.gitignore”文件之外的所有文件。
  • 手动把“build目录”里面的所有内容都移动到“build目录”之外,也就是和“build目录”同级别。再把“build目录”删除。
    17dd5850df728b8e0743967d8a372f8.png

推送到远端 AtomGit 上的 build 分支

  • 添加&提交

    image.png

  • 把提交了变更的数据推送到 AtomGit 远端仓库

    image.png
    image.png

  • 检查更新成功

    image.png

方式二:用 Git 命令操作

git checkout build
  • 接着手动删除“build目录”和“.gitignore”文件之外的所有文件。
  • 手动把“build目录”里面的所有内容都移动到“build目录”之外,也就是和“build目录”同级别。再把“build目录”删除。
    17dd5850df728b8e0743967d8a372f8.png

推送到远端 AtomGit 上的build 分支

git add .
git commit -m '更新说明'
git push
  • 检查更新成功
    image.png

5、访问远端仓库地址查看更新

  • 访问仓库地址,查看是否更新了数据。
  • 如果没有请进入仓库的“设置”->"Pages",手动点击下“保存”按钮,将会更快的刷新最新的数据。如下图。
    b755add1ec515c4a77aeacbebb1a8ea.png

以上。