Skip to main content

为项目编写代码

使用分支、复刻、提交和拉取请求,安全地为协作项目编写、优化并提出代码更改。

在参与项目时,你需要一个安全的环境来编写和完善代码,以免影响主代码库。 分支、派生、提交和拉取请求协同工作,为你提供这样的空间,让你可以进行试验、逐步提交工作,并将完成的更改提交供审核。

使用分支和派生将工作隔离开来

大多数工作首先创建可以自由更改的代码的独立副本。

  • 对存储库具有写入访问权限时,请使用 分支 。 分支允许你在存储库的包含区域中开发功能、修复 bug 或试验,而不会影响其他分支。 从现有分支(通常是默认分支)创建分支。
  • 如果没有写入访问权限,或者希望与原始项目完全独立时,请使用 分支 。 分叉是一个单独的存储库,它与原始“上游”存储库共享代码和可见性设置。 它有自己的分支、议题和拉取请求。 使用分支,还可以打开上游存储库的拉取请求。

在共享存储库中协作时,分支通常是最简单的选择。 分叉通常是开放源代码贡献的最佳选择,你可能没有对上游存储库的写入访问权限。

通过提交签入工作

编写代码时,将小而有意义的更改组保存为 提交。 每个提交都会记录你的工作的快照以及描述更改的内容的消息,这使得跟踪历史记录、查看更改以及了解代码是如何演变的更容易的。

在你的分支或复刻中经常提交更改可以让你:

  • 将更大的更改分解为可审阅的步骤。
  • 如果试验不起作用,请回滚到早期状态。
  • 为审阅者提供有关如何完成最终更改的清晰历史记录。

通过拉取请求提出变更

当你的工作已准备好共享时,你可以发起 拉取请求,提出将你的更改合并到基础分支。 拉取请求会将你的提交、变更说明以及审阅者在合并前讨论和评估该变更所需的工具汇集到一起。

你可以在工作仍在进行中时创建草稿拉取请求,以发起拉取请求,从而在无需正式请求审查的情况下共享你的更改。 当你需要早期反馈或想要针对代码运行自动检查时,这非常有用。

使代码保持最新且已优化

当拉取请求处于打开状态时,基分支可以随着其他人合并工作而不断更改。 为了使你的改动保持清晰并减少冲突,你可以:

  • 经常将基础分支合并到你的分支中,或将你的分支变基到基础分支之上,这样你的差异内容就能始终聚焦于你的更改所引入的内容。 GitHub 默认情况下,显示一个三点差异,它将分支与从基点分离的点进行比较。
  • 重新设置基以整理混乱的提交历史记录(重新排序、合并或重新编写提交),然后请求审阅。
  • 当 Git 无法自动合并冲突更改时,解决合并冲突。

在存储库控件中工作

经验丰富的贡献者会在仓库设定的约束范围内开展工作。 这些控制项决定了你可以将内容推送到哪里、谁必须批准你的更改,以及在合并之前必须通过哪些检查。

  • 受保护的分支和规则集 可以阻止直接推送到重要分支,需要线性历史记录或签名提交,并要求在合并之前进行状态检查或评审。
  • 当更改涉及他们拥有的文件时,系统会自动请求代码所有者进行评审,因此请计划对敏感区域进行审批。
  • 推送规则集 可以跨分支网络应用,限制每个分叉中的文件路径、大小或名称。
  • 预接收钩子允许 GitHub Enterprise Server 上的管理员在接受提交之前先在服务器上强制执行策略检查。

集成工具链

拉取请求可将你的代码与各种自动化工具和服务关联起来,帮助你更快速、更安全地编写代码。


GitHub Copilot ** 可帮助你编写、调试和优化代码。

  • Code scanningDependabot 会在更改通过拉取请求推进时显示安全问题和存在漏洞的依赖项,以便你及早采用安全编码实践。
  • GitHub Actions 可以在每次推送拉取请求时运行持续集成,自动生成和测试更改。

延伸阅读