学习笔记:GitHub 基础认证考试
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
今年二月,我顺利通过了 GitHub 基础认证考试。我使用 GitHub 已有五年左右的时间,并且是 GitHub Star 校友,所以在备考过程中我相当有信心。然而,我的知识体系中仍然存在一些空白,我希望做好充分的准备。
这篇文章汇总了一些链接、资源以及我在学习过程中做的笔记。希望对你的认证之路有所帮助。
目录
研究方法
考试指南
首先,我复习了考试指南。这份指南详细列出了考试涵盖的主题,以及各个领域的权重百分比。我的策略如下:
- 请查看每个领域下的主题。
- 指出我知之甚少(黄色标记)或几乎一无所知(红色标记)的领域。
- 根据对各领域主题的假定知识水平,为每个领域分配一个舒适度等级(红色、黄色或绿色)。
- 评估各领域占比,以了解学习的优先顺序。
这帮助我制定了备考计划,明确了需要重点关注的领域。如果你好奇的话,以下是我开始学习之前的个人复习计划:
- 领域 1:Git 和 GitHub 简介(22%) (绿色)
- GitHub 实体(RED)
- GitHub Desktop(黄色)
- GitHub 移动版(黄色)
- 其他所有(绿色)
- 领域 2:使用 GitHub 代码库(8%) (绿色)
- CODEOWNERS 文件(红色)
- 仓库模板(黄色)
- 回购洞察(黄色)
- 其他所有(绿色)
- 领域 3:协作功能(30%)(绿色)
- 问题表格(红色)
- CODEOWNERS 文件(红色)
- 讨论(黄色)
- 通知(黄色)
- 其他所有(绿色)
- 领域 4:现代发展(13%)(黄色)
- GitHub 代码空间(RED)
- GitHub Copilot(黄色)
- 其他所有(绿色)
- 领域 5:项目管理(7%)(黄色)
- Projects 和 Projects classic (RED) 的区别
- 配置选项(黄色)
- 模板库(黄色)
- 项目工作流程(黄色)
- 项目洞察(黄色)
- 其他所有(绿色)
- 领域 6:隐私、安全和管理(10%) (红色)
- GitHub 管理(RED)
- 身份验证和安全(黄色)
- 其他所有(绿色)
- 领域 7:GitHub 社区的益处(10%)(绿色)
- 内部资源(黄色)
- 其他所有(绿色)
微软 GitHub 基础课程
微软推荐一个免费的GitHub 基础课程!我一开始也学过,但感觉很多内容都是我已经知道的,有点不耐烦了😅。不过,如果你是新手或者比我更有耐心,我还是推荐的!
你可以在下面查看我已完成课程部分的笔记。
Udemy 练习题
我决定在 Udemy 上购买这套练习题集。根据你的学习方式,这或许对你有所帮助。我其实通过了第一套练习题,但只得了 75 分,我想更有信心一些。
练习题不仅会告诉你哪些题做对了,还会提供详细的答案注释,并附有相关文档的链接。我把做错的题和做对了但不太确定答案的题都做了手写笔记(内容如下)。
手写笔记有助于加深我对信息的理解。我还阅读了相关文档,并做了额外的笔记来澄清我认为重要的概念。到我做第四次模拟考试时,我得了93分。
我最终以 90% 的成绩通过了认证考试。
笔记
本部分是我学习时的原始笔记。这些笔记基于我个人的学习经验,并非全面的学习指南,因为其中并未包含我已掌握的知识点。不过,它们或许对你有所帮助。
⚠️ 免责声明:我是在二月份参加的考试,所以有些内容可能已经有所变化!请务必参考GitHub文档以获取最新信息。
实用文档链接
以下是我在学习过程中发现对 GitHub 文档有帮助的一些链接列表。
- 基础权限
- 副驾驶
- 项目自动化
- 工作流程基础知识
- 组织新闻动态
- 项目最佳实践
- GitHub 安全功能
- 问题和拉取请求模板
- 项目洞察
- 项目与经典项目:
- 分支机构保护规则
- 代码库最佳实践
- GitHub赞助商
微软课程笔记
Git
- VCS - 版本控制系统
- SCM - 软件配置管理系统
- VSC 可以存在于非软件领域,VSC 是 SCM 的一个组成部分。
- Git是分布式的,这意味着项目历史记录既存储在本地,也存储在远程服务器上。
- 这与集中式模式相反,集中式模式下所有项目历史记录都仅存储在集中式服务器上。
Git术语
- 工作树——包含项目的嵌套目录和文件的集合
- 存储库 - 工作树的顶层目录,用于存储历史记录和元数据。
- 裸仓库 - 不属于任何工作分支,用于共享/备份(project.git)
- 哈希值——由哈希函数生成的数字,代表文件的内容,用于确定文件是否已被修改。
- 对象 - Git 仓库包含四种类型的对象,每种对象都由 SHA-1 哈希值标识。
- Blob - 包含普通文件
- 树状结构——表示一个目录,包含名称、哈希值和权限。
- 提交 - 代表工作树的特定版本
- 标签 - 附加到提交的名称
- 提交 - 既可以是宾语(commit),也可以是动词,意思是提交对象
- 分支——一系列已命名的关联提交
- 主分支 - 分支上的最新提交
- 主分支/master - 仓库的默认分支
- 允许开发者独立工作,然后将更改合并到默认分支。
- 远程 - 指向另一个 Git 仓库的命名引用
- Origin——仓库初始化时创建的用于推送和拉取操作的默认远程仓库。
- Git(命令)推送(子命令)--hard(选项)
Git 和 GitHub
- Git 是一个分布式版本控制系统 (DVCS)。
- GitHub 是一个云平台,它以 Git 为核心技术,并充当远程仓库。
- Git 也可以被描述为用于本地管理版本历史记录的命令行界面 (CLI)。
- GitHub 也可以被描述为一个用于协作处理共享存储库、提交问题和拉取请求的平台。
命令行命令
- git 配置
git config —global user.name “USER_NAME”git config —list
- git init
- git 状态
- git add (staging)
- git提交
- git 日志
- git 帮助
git <command> —help
git checkout -b branchName这是创建和检出新分支的最佳方式
GitHub 简介
- 如何创建存储库
- 如何向存储库添加文件
- 在 GitHub 用户界面中手动添加文件到目录中,然后输入内容,并将更改直接提交到新的拉取请求分支。
- 要点
- 简化的代码片段分享方式。每个 gist 都是一个 Git 仓库,因此可以被 fork 和 clone。
- 维基百科
- 每个 GitHub 仓库都包含文档部分
- 用于分享除 README 文件之外的长篇内容
GitHub 流程
- 分支
- 提交
- 每次提交都有一个唯一的 ID,并记录提交时间和贡献者信息。
- 仓库中文件的状态:
- 未跟踪 - Git 不知道它的存在
- 已跟踪 - 可以是以下子状态之一:
- 未修改
- 修改的
- 摆拍
- 坚定的
- 拉取请求
- 表示一个分支的提交已准备好合并到另一个分支。
- GitHub 流程
- 创建分支
- 进行更改
- 将更改部署到特性分支以确保它们在产品中正常运行(推荐)
- 创建拉取请求
- 审查并落实反馈
- 批准并将 PR 合并到主分支
- 删除分支
GitHub 协作
- 问题
- 跟踪想法、反馈、任务或错误
- 可以从代码仓库、任务列表中的项目、项目中的笔记、问题或 PR 中的评论、特定代码行、URL 查询创建
- 只有维护者才能分配、添加到项目看板、关联里程碑或应用标签
- 讨论
- 面向所有人的、与代码无关的对话。
- 在“设置”>“功能”>“讨论”中启用讨论功能。
- 任何拥有查看权限的已认证用户都可以在该仓库中创建讨论。
- 系统设有默认类别,还可以通过表情符号和名称的组合添加更多类别。
GitHub平台管理
- 订阅和通知
- GitHub Pages
- 从代码仓库中的文件提供静态网站托管服务
GitHub 产品简介
- 个人账户
- 每个人都有个人账户
- 可以是 GitHub 免费版或专业版。
- 组织账户
- 共享账户,方便人们同时协作开展多个项目。
- 权限采用分层式方法
- 无法直接登录组织。
- 个人账户可以在组织中扮演角色。
- 企业账户
- 允许管理员集中管理多个组织的策略和计费,并启用组织间的内部资源共享。
- 必须有一个像组织一样的管理方式
- 管理和执行企业内所有组织的策略
- GitHub 团队
- 旨在反映公司结构的组织成员群体
- GitHub计划
- 免费供个人和组织使用
- 个人专用
- 团队组织
- 企业
- 服务器(自托管)
- 云
- GitHub 移动版
- 第一方客户端应用程序
- 无法批准或合并 PR
- GitHub Desktop
- GitHub 的计费方式基于账户,包括订阅计费和按使用量计费。
练习测试1笔记
随着每次考试的进行,我学到的东西越来越多,所以我的笔记也变得越来越不详细。
一般的
- 克隆 = 复制整个仓库
- 分叉 = 创建供个人使用的私有副本
- 模板仓库可以包含任何文件或内容
reason:是一种过滤通知的方法(例如,仅搜索提及通知)。- PR 中的标签页:对话、提交、检查、文件更改
- 可以直接从问题创建分支。
- 代码库洞察数据展示了流量、项目和贡献者参与度。
- GitHub 主题示例:仓库用途、主题领域、兴趣小组、社区、语言等。
- 用于在存储库之间创建基于主题的连接的标签
- 根据主题发现类似项目
- 公共仓库支持代码扫描,私有仓库则需要 GitHub 企业云高级安全版本。
- Copilot 会分析当前文件和相关文件以获取上下文信息。
- GitHub 限制了仓库中允许的文件大小。启用 Git 大文件存储 (LFS) 可以跟踪大文件。
- GitHub 组织拥有一个新闻推送,其中显示:
- 已开启/已关闭/已合并的问题和 PR
- 创建/删除分支
- 创建标签或版本
- 评论
- 已推送新的提交
使用权
- 组织成员默认拥有创建代码库和项目看板的权限
- 个人仓库权限级别 = 所有者和协作者
- 组织所有者可以要求成员、协作者和账单管理员启用双因素身份验证 (2FA)。
- 如果未启用双因素身份验证 (2FA),用户将被立即从组织中移除,且无宽限期。
- GitHub Enterprise 仓库可见性选项:私有、公开、内部
- 组织仓库角色:
- 阅读:推荐给想要查看或讨论您的项目的非代码贡献者。
- 分诊:推荐给需要主动管理问题、讨论和拉取请求但没有写入权限的贡献者
- 撰写:推荐给积极推动项目进展的贡献者
- 维护:推荐给需要管理存储库但又不想执行敏感或破坏性操作的项目经理。
- 管理员:推荐给需要完全访问项目权限的用户,包括执行敏感和破坏性操作,例如管理安全设置或删除代码库。
- 组织角色:
- 所有者:组织所有者拥有对组织的完整管理权限。所有者数量应有所限制,但至少应有两个。
- 成员:组织中人员的默认非管理角色是组织成员。
- 版主:版主是组织成员,除了作为成员所拥有的权限外,他们还可以阻止和解除阻止非成员贡献者、设置互动限制以及隐藏组织拥有的公共存储库中的评论。
- 账单管理员:账单管理员是可以管理您组织账单设置(例如付款信息)的用户。
- 安全经理:安全经理是组织级别的角色,组织所有者可以将其分配给组织内的任何团队。
- 公开测试版
- GitHub 应用管理员:默认情况下,只有组织所有者才能管理组织名下 GitHub 应用的注册设置。要允许其他用户进行管理,所有者可以授予他们 GitHub 应用管理员权限。
- 外部协作者:为了在允许访问存储库的同时确保组织数据的安全,您可以添加 外部协作者。外部协作者是指有权访问一个或多个组织存储库但并非组织正式成员的人员,例如顾问或临时员工。
代码空间
- 可以创建带有预配置选项的代码空间,并拥有深度链接
- 可以更改显示名称、shell、机器类型和区域
- 仅支持 Linux
- 在 GitHub 拥有的 Azure 帐户中运行(但费用可以记入您的 Azure 帐户)
- 代码空间是一个 Docker 容器,配置用于在 GitHub 管理的虚拟机上运行的开发环境。
项目
- GitHub CLI 和 GraphQL API
- 所有拥有写入和管理权限的用户均可查看项目详情。
代码所有者
- 自动请求审核 PR
- 也可用于要求在合并前获得代码所有者的批准。
- 将鼠标悬停在 GitHub 文件上的盾牌图标上,即可查看代码所有者信息。
- 拥有仓库写入权限的用户可以创建或编辑
CODEOWNERS文件- 代码所有者也必须拥有写入权限
- GitHub Pro、Team 或 Enterprise 版本需要为私有仓库指定代码所有者
- 在根目录或目录中(GH 将按此顺序搜索文件)
CODEOWNERS的文件中(无扩展名)定义.github/docs/ - 根据文件所在的分支进行分支特定处理
- 语法与 .gitignore 类似:
*.js @js-owner // all files ending in .js have user js-owner as code owner
*.txt @octo-org/octoteam // team octoteam within octo-org owns all .txt files
/docs/ @docsowner // all files in docs directory are owend by user docsowner
练习测试 2 的笔记
- 在 YAML 表单定义文件中添加问题表单
/.github/ISSUE_TEMPLATE - 表单回复已转换为 Markdown 格式并添加到问题正文中。
- 项目可以是组织项目,也可以是用户项目。
- 分支机构保护规则可防止对分支机构进行意外或未经授权的更改。
- 项目图表分为两种类型:当前图表和历史图表。
- 双因素身份验证方法:手机/电脑上的 TOTP 应用或短信
- 安全密钥可以作为备用双因素认证方式添加,但不能作为主要认证方式添加。
- 可以在 GitHub 移动版中进行基于 Web 的代码编辑
- 无法进行自动化测试或持续集成
- 内部开源:使用开源软件方法构建专有软件
- 内部代码库使组织能够实践内部开源。
- 需要 GH 企业云
- 所有企业成员都拥有对内部存储库的读取权限
- 内部仓库对其他组织仓库的外部协作者不可见。
- 对于企业组织中创建的所有新存储库,默认设置为“内部”。
- 最多可以指派 10 人负责一个问题或公关活动。
- 私有免费仓库限1个
- 从现有仓库创建的模板具有相同的目录结构、分支和文件。
- 模板可以选择仅复制默认分支,也可以选择复制所有分支。
- 安全选项卡包含:
- 安全策略
- 公告
- Dependabot 警报
- 代码扫描结果
- 秘密扫描结果
- 与经典项目相比,项目提供更强大的集成功能。
- 项目(与经典项目相对)旨在与现有工具(例如 GraphQL API 和 GitHub Actions)集成。
- 代码空间可以使用帐户密钥作为环境变量。
- 项目布局:看板、路线图和表格
- 拉取请求模板的名称选项文档
- PR 和 issue 模板必须位于默认分支中
- 可以在仓库中禁用项目、问题和 GitHub Actions。
- 里程碑提供可视化的路线图,用于跟踪问题和 PR 的进展情况。
- 讨论帖可以置顶
- Codespaces 的自动保留期限最长为 30 天,可以缩短以节省成本。
- 关注某个组织,即可查看其动态,例如新的讨论、赞助活动和资源库。
练习测试3笔记
- 从公共领域转向私人领域:
- 从 GitHub 归档计划中移除仓库
- 取消发布所有已发布的 GitHub Pages 页面
- 分诊角色负责主动管理问题、讨论和 PR,但没有写入权限。
- 组织仓库角色:
- 读
- 分诊
- 写
- 维持
- 行政
- 组织安全管理员角色(公开测试版)。拥有对所有代码库的读取权限,安全警报写入权限,并可在组织和代码库级别配置代码安全设置(文档参考)。
- 可以为文件或 PR 版本中的一行或一系列行创建永久链接。
- 在公共代码库中,合作伙伴的依赖关系图和密钥扫描警报始终启用。
- 代码空间的特定密钥在“设置”>“代码、规划和自动化”>“代码空间”>“新建密钥”中设置。设置名称、值和具有访问权限的存储库。
- GitHub赞助需要启用GH-sponsor的开发者或组织个人资料。
- 必须为开源软件项目做出贡献,并且居住在受支持的地区。
- 最多可设置 10 个一次性付款等级和 10 个月度付款等级
- 您可以通过在新评论正文中输入“重复于”以及问题/PR编号来将问题标记为重复。
- 必须具有写入权限
- 必要时可以撤销
- GitHub 项目最大条目数 = 1200
- 最多存档 10,000 条
练习测试 4 的笔记
- 提交与哈希:
- 提交(commit)是记录文件更改的特定且不可更改的快照,它会在版本历史记录中创建按时间顺序排列的记录。
- 哈希值是一个数字,表示文件或其他对象的内容。
- GitHub赞助可以通过Patreon支付。
- GH赞助商不支持比特币支付。
- 所有者或管理员可以限制仓库可见性变更。
- 默认讨论类别:
- 公告
- 一般的
- 想法
- 民意调查
- 问答
- 展示与讲解
- 工作流触发器:
- 仓库中的事件
- GH 之外的事件触发了
repository-dispatch事件 - 预定时间
- 手动的
- 组织可以有多个所有者
- 所有者不能改变自己的角色,但可以改变其他所有者的角色。
- 启用功能预览即可访问 Alpha 和 Beta 功能
- 启用/禁用 GitHub 讨论需要管理员权限
- 安全 Markdown 文件用于安全相关的通信,例如漏洞报告。
- Project Insights 功能在 Project Classics 中不可用。
- 已保存的回复可以包含任何文本、Markdown 和表情符号反应
- 建议项目经理继续担任此角色
其他资源
如果您正在寻找更全面的考前准备资料,请查看FreeCodeCamp提供的以下资源:
学习愉快,祝你好运!
文章来源:https://dev.to/ceceliacreates/study-notes-github-foundations-certification-exam-3m2d

