Skip to main content

分支

使用GitHub中的分支隔离开发工作、管理默认分支,以及使用拉取请求和分支保护进行有效协作。

关于分支

分支允许你开发功能、修复 bug 或安全地试验存储库包含区域中的新想法。

始终从现有分支创建新分支。 通常,您可能会从仓库的默认分支创建新的分支。 然后,您可以单独处理这个新分支,不受其他人对仓库所做更改的影响。

你创建的用于生成功能的分支通常称为功能分支或主题分支。 请参阅“Managing branches within your repository”。

还可以使用分支发布 GitHub Pages 站点。 请参阅“什么是 GitHub Pages?”。

必须对仓库有写入权限才能创建分支、打开拉取请求、以及删除和恢复拉取请求中的分支。 请参阅“对GitHub的访问权限”。

关于默认分支

在 GitHub 和 GitHub 上创建一个有内容的仓库时,将创建包含单一分支的仓库。 仓库中的第一个分支是默认分支。 默认分支是当任何人访问存储库时显示的分支 GitHub 。 默认分支也是初始分支,当有人克隆存储库时,Git 会在本地检出该分支。 除非指定不同的分支,否则仓库中的默认分支是新拉取请求和代码提交的基础分支。

默认情况下,将 GitHub 任何新存储库中的默认分支 main 命名。

您可以更改现有仓库的默认分支。 有关详细信息,请参阅“更改默认分支”。

您可以为新仓库设置默认分支名称。 有关详细信息,请参阅“管理仓库的默认分支名称”、“管理组织中仓库的默认分支名称”和“在企业中实施仓库管理策略”。

使用受保护分支

受保护的分支可帮助维护人员对重要分支强制执行规则。 受保护的分支可以阻止强制推送或删除、需要状态检查、需要评审、需要代码所有者批准或要求签名提交,然后更改才能合并。

这些保护可帮助团队保持重要分支稳定,并在合并拉取请求之前明确预期。 若要查看拉取请求是否可以合并,请检查拉取请求的 “对话 ”选项卡底部的合并框。请参阅 关于受保护分支

注意

如果你是存储库管理员,则即使拉取请求不符合要求,也可在启用了分支保护的分支上合并拉取请求,除非分支保护设置为“包括管理员”。

比较拉取请求中的分支

拉取请求将头分支上建议的更改与基分支进行比较。 创建拉取请求时,可以更改要比较更改的基分支。 “ 文件更改 ”选项卡显示拉取请求合并后会更改的内容。

差异视图可帮助审阅者在不阅读每个提交的情况下了解更改。 可以查看统一差异、拆分差异、丰富差异或源差异;忽略空格更改;或筛选文件以专注于最相关的更改。

拉取请求的“已更改的文件”选项卡的屏幕截图。 “差异视图”菜单用深橙色框标出。

如果拉取请求超出存储库差异限制,或者某个文件被存储库的 .gitattributes 文件中的规则隐藏,则差异可能不会显示。 请参阅 存储库限制自定义更改的文件在GitHub上的显示方式

三点和两点 Git 差异比较

git diff 命令支持两种比较方法。 拉取请求会显示 GitHub 三点差异。

方法命令它比较的内容
三点git diff A...B分支(合并基)和主题分支最新版本的最新常见提交。
双点git diff A..B基本分支(例如) main的最新状态和主题分支的最新版本。

两点差异直接互相比较两个 Git committish 参考,如 SHA 或 OID(对象 ID)。 打开 GitHub时,必须将两点差异比较中的 Git 提交引用推送到同一存储库或其分支。

请参阅 Pro Git 书籍站点中的 Git 差异选项

关于三点比较 GitHub

由于三点比较使用合并基,因此重点介绍“拉取请求引入的内容”。

使用两点比较时,即使尚未对主题分支进行任何更改,差异也会在更新基本分支时发生更改。 双点比较还侧重于基分支,这可能会使主题分支引入的更改更难理解。

相比之下,三点比较一直显示主题分支自分支分歧以来引入的更改。

频繁合并

为了避免混淆,请经常将基分支(例如 main)合并到主题分支中。 合并基分支时,由双点和三点比较显示的差异是相同的。 建议尽快合并拉取请求。 这鼓励参与者更小地发出拉取请求,我们通常建议这样做。

延伸阅读