GitHub最佳实践之发起第一个PR
Git与GitHub
GitHub 是一个基于 Git 的代码托管平台,它提供了一个远程仓库(Remote Repository)来存储和共享代码,并提供了一系列协作工具,如Pull Requests(拉取请求)、Issues(问题跟踪)、CI/CD(持续集成/持续部署)等。
你可以把 Git 比作是一本笔记本,而 GitHub 就像是一个云笔记平台(比如 Evernote),它让你可以随时随地访问、分享和协作管理你的笔记(代码)。
版本控制
什么是版本控制
版本控制是一种用于管理文件变更历史的技术,特别适用于软件开发中的代码管理。它可以记录文件的每次修改,允许开发者回溯历史版本、比较差异,并且支持多人协作开发。
版本控制的几种方式
- 手动控制: 最原始的方法就是手动备份文件,这种方法容易混乱,不适合团队协作。
- 集中式:SVN(所有文件保存在Server上,使用起来非常简单)
- 分布式:Git(分布式存储,每个local都有版本库)
版本控制的应用场景
- 软件开发:管理代码、团队协作、功能开发、bug 修复等。
- 文档管理:追踪文档历史,适用于论文、合同等版本管理。
- 网站开发:管理网站源码,配合 CI/CD 进行自动化部署。
- 配置管理:运维工程师使用 Git 追踪服务器配置文件的变更。
Git基础
使用方式:
- 命令行(CLI)
- 图形化界面(GUI)
- IDE插件(Vscode之类的)
使用之前:
- 使用
git config
命令配置用户名和邮箱- 三种参数 Local/global/system 对应不同配置域
- 使用
git config --list
检查配置信息
初始化:
- 概念:仓库(Repo)
- 一个特定目录
- 其中的所有文件都会被git统一管理
- 跟踪文件历史和版本
- 在目录中生成.git文件夹作为管理文件夹
- 创建:
- 使用
git init
本地创建仓库 - 使用
git clone
远程克隆仓库
- 使用
- 概念:分区
- 工作区:资源管理器能够看到的文件夹(.git 所在目录)
- 暂存区:缓冲区,暂存文件的位置(.git/index)
- 本地仓库:存储版本代码和主要信息的位置(.git/object)
- 流程:工作区通过
git add
将文件提交至暂存区,再通过git commit
将文件提交到本地仓库 - 文件状态:因为分区形式诞生的对文件所处分区的追踪
- 未跟踪(Untrack):未被git管理的文件
- 未修改(Unmodified):已经被git管理起来但未被修改的文件
- 已修改(Modified):已经被git管理起来且被修改的文件
- 已暂存(Staged):已经添加到暂存区的文件
开始使用:
- 仓库状态: 使用
git staus
查看仓库状态 - 暂存:使用
git add
将文件提交至暂存区 - 提交: 使用
git commit
只会提交暂存区的文件,每次提交都需要指定信息 - 撤销: 使用
git reset
回退文件版本- –soft
- –hard
- –mixed (默认参数)
- 查看差异:使用
git dif
查看- 可以比较不同区域以及同一文件的不同版本的差异
- 默认行为是比较工作区和暂存区之间的差异
- 删除文件:
- 直接删除文件后提交
- 使用
git rm
进行文件删除 会默认将文件同时从工作区和暂存区同时删除--cached
参数可以命令只删除缓存区文件
- .gitignore
- 将一些文件添加到git管理的忽略项中(一些敏感文件,编译后文件等)
发起你的第一个Pull Request
前置条件
- GitHub 账号
- Git 安装(确保本地已安装 Git,使用
git --version
检查) - Fork 目标仓库(如果你不是该项目的维护者)
- Git 配置 SSH 或 HTTPS 访问权限
步骤 1:Fork 目标仓库
如果你要为开源项目贡献代码,你通常没有直接推送的权限,所以需要先 Fork(复制)一份代码到自己的 GitHub 账户下:
- 打开 GitHub 目标仓库(如
https://github.com/example/repo
)。 - 点击右上角的 “Fork” 按钮,创建你自己的副本(
https://github.com/your-username/repo
)。 - 这个 Fork 版本属于你,接下来你可以自由修改。
步骤 2:克隆 Fork 后的仓库到本地
使用 git clone
将 Fork 的仓库下载到本地:
1 | git clone https://github.com/your-username/repo.git |
或者使用 SSH(如果配置了 SSH Key):
1 | git clone [email protected]:your-username/repo.git |
进入项目目录:
1 | cd repo |
步骤 3:添加上游(Upstream)仓库
为了保持你的 Fork 代码是最新的,需要添加原始仓库(Upstream):
1 | git remote add upstream https://github.com/example/repo.git |
验证远程仓库:
1 | git remote -v |
输出类似:
1 | origin https://github.com/your-username/repo.git (fetch) |
步骤 4:创建新分支
在修改代码之前,创建一个新的分支(避免直接修改 main
分支):
1 | git checkout -b feature-branch |
例如:
1 | git checkout -b fix-bug-123 |
步骤 5:修改代码并提交
编辑代码后,执行:
1 | git add . |
最佳实践:
- 使用有意义的 commit 信息,如
"修复登录页面的 CSS 样式"
。 - 如果是关联 Issue,可以使用
fixes #123
(PR 合并后,Issue #123 会自动关闭)。
步骤 6:同步最新代码(可选)
如果你的 Fork 代码较旧,最好与上游同步,以避免冲突:
1 | git checkout main |
步骤 7:推送分支到 GitHub
1 | git push origin feature-branch |
步骤 8:在 GitHub 提交 Pull Request
- 打开 GitHub 仓库(
https://github.com/your-username/repo
)。 - 点击 “Compare & pull request” 按钮(GitHub 会检测到你有新分支)。
- 填写 PR 详情:
- 标题(如:
修复登录按钮点击无效的问题
)。 - 描述(简要说明你的修改,并附带 Issue 号)。
- 选择合并分支:
base
选择upstream/main
(目标仓库的主分支)。compare
选择feature-branch
(你修改的分支)。
- 标题(如:
- 点击 “Create pull request” 提交 PR。
步骤 9:等待审核
- 维护者会进行 Code Review(代码审查)。
- 可能会要求你 修改代码(你可以继续提交到
feature-branch
,PR 会自动更新)。 - 通过后,维护者会 合并 PR,你的代码就正式进入主仓库!
步骤 10:清理本地分支
PR 合并后,你可以删除本地分支:
1 | git checkout main |
除特別声明外,本博客所有文章均遵守 WTFPL 许可。
评论