first-contributions 分支清理指南从本地与远端仓库安全删除已完成使命的功能分支【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions本篇指南聚焦 first-contributions 开源贡献教程中「贡献完成后如何清理分支」这一关键收尾环节当你在教程中创建的add-your-name分支所提交的 Pull Request 被合并后如何把它从本地仓库与 GitHub fork 中一并删除并继续保持本地与 fork 和上游仓库同步。读完本文你将掌握git checkout、git merge、git branch -d/-D、git push origin --delete的完整使用场景与安全边界以及如何借助 upstream 工作流让三个仓库上游公共仓库、你的 GitHub fork、你的本地仓库始终保持一致。本文以 docs/additional-material/translations/Belarusian/removing-branch-from-your-repository.be.md 为核心骨架展开其英文原版见 docs/additional-material/git_workflow_scenarios/removing-branch-from-your-repository.md并补充了同仓库中分支删除、同步相关的配套文档与 README.md 中的完整贡献流程作为佐证。为什么贡献完成后要删除功能分支在 first-contributions 的标准教程流程中你会在fork - clone - create branch - commit - push - pull request之后创建一个命名类似add-your-name的功能分支README 中的示例为add-alonzo-church这类命名参见 README.md 的 Create a branch 一节。这个分支名称本身就带有一次性的特殊使命——它存在的唯一意义是承载一次贡献。因此一旦 Pull Request 被上游维护者合并该分支就已经完成了它的全部使命。此时将分支删除既不是强制要求但却是值得推荐的卫生习惯本地仓库和 GitHub fork 中残留大量已完成使命的旧分支会让仓库显得杂乱也会让后续的git branch列表、git status输出难以阅读。正如原文档所说该分支的名称显示了它的特殊用途因此它的生命周期可以相应地短一些。需要特别强调的是分支删除的前提是其中的提交已经被安全合并。Git 的分支本质上只是一个指向某次提交的可移动指针删除分支并不会删除其指向的提交对象在 git reflog 和 GC 之前它们仍可恢复但会移除该分支的引用与命名。因此在删除前必须先把add-your-name分支上的工作合并回主分支。第一步切换到主分支并合并功能分支清理工作的第一步是把add-your-name分支上的改动合并回你的主分支main或旧式命名master。原文档给出的完整命令序列如下git checkout master git merge add-your-name master第一条命令git checkout master用于切换到主分支。如果你不确定当前所在分支可以先执行git status通过输出的第一行On branch xxx查看当前分支。若你使用的是较新的 Git2.23也可以使用语义更明确的git switchgit switch master关于第二条命令需要补充一点实践细节原文档写法git merge add-your-name master属于把两个分支合并进当前分支的旧式多分支合并语法。更常见、也更推荐的现代写法是在已切换到主分支的前提下只指定被合并的分支名git merge add-your-name两种写法在将add-your-name的提交并入主分支这一效果上等价前者是 octopus 风格的多目标合并。实际使用时请以你本机 Git 版本的提示为准。合并完成后主分支就包含了你的贡献内容add-your-name分支也就失去了存在的必要。需要说明的是原文档使用master作为主分支名而本项目 README 与较新文档使用main英文原版文档 removing-branch-from-your-repository.md 中即为git checkout main。请以你克隆仓库时实际存在的主分支名为准git branch可列出所有本地分支。第二步删除本地功能分支合并完成后即可删除本地仓库中的add-your-name分支git branch -d add-your-name这里的-d是--delete的缩写代表安全删除。它的保护机制是仅当该分支已完全合并到当前分支或 HEAD 指向的分支时才允许删除如果分支上还有未被合并的提交Git 会拒绝删除并报错从而避免你意外丢失尚未合并的工作。与-d相对的是-D即--delete --force表示强制删除。配套文档 delete-branch-locally.md 给出了完整的三种本地删除写法git branch -D branch_name # 强制删除即使未合并 git branch --delete --force branch_name # 与 -D 完全等价 git branch --delete branch_name # 未合并时报错即 -d 的完整写法按文档说明-D是--delete --force的组合会无视合并状态强制删除分支而-d--delete会根据分支合并状态决定是否报错。在首次贡献教程这种分支已被合并的场景下请优先使用-d让 Git 帮你做一次安全检查只有当你确实误建了分支例如 delete-branch-locally.md 开头提到的不小心拼错了分支名且确定其中内容无需保留时才使用-D强制删除。执行完git branch -d add-your-name后你的本地仓库就已经清理干净了。此时可以通过git branch确认add-your-name已不再出现在分支列表中。第三步谨慎处理 GitHub fork 中的远程分支删除本地分支后你的 GitHub fork 中仍然保留着同名的add-your-name远程分支。此时必须区分两种情形切勿盲目删除如果该远程分支对应的 Pull Request 还没有被上游仓库合并请不要删除它。因为 Pull Request 的提交来源就是这个远程分支删除分支会导致 PR 失去其提交源甚至使 PR 无法正常合并。原文档明确强调你是从这个远程分支向我的仓库提交了一个 Pull Request除非这个请求已经被合并否则不要删除这个分支。如果维护者已经合并了你的 Pull Request此时远程分支的使命已经结束可以放心删除。只有在确认 PR 已合并后才执行删除远程分支的命令git push origin --delete add-your-name这条命令通过--delete标志也可写作:branch-name的旧式语法通知远端删除名为add-your-name的分支引用。其中origin指向你的 GitHub fork——在 README.md 的贡献流程中origin是克隆 fork 后自动配置的默认远端名称git remote -v可以查看你配置的所有远端及其 URL。至此本地分支与 fork 中的远程分支均已清理完毕三个仓库上游、fork、本地中与本次贡献相关的临时分支全部消失整个贡献流程画上圆满句号。延伸让 fork 与本地仓库持续保持同步分支清理只是贡献流程的收尾之一。正如原文档在末尾指出的随着时间推移上游公共仓库会不断新增提交你本地机器和 GitHub fork 的主分支将逐渐落后需要定期同步。原文档将读者引向专门的同步教程——即仓库中的 keeping-your-fork-synced-with-this-repository.md中文版见 keeping-your-fork-synced-with-this-repository.zh-cn.md。该文档描述的是开源协作中典型的Triangle Workflows三角工作流上游公共仓库 → 你的 GitHub fork → 你的本地仓库。完整同步流程为# 1. 切换到主分支 git checkout main # 2. 添加上游仓库为远端命名为 upstream git remote add upstream https://github.com/firstcontributions/first-contributions.git # 3. 拉取上游最新提交 git fetch upstream # 4. 将上游 main 变基/合并到本地主分支 git rebase upstream/main # 5. 推送本地主分支到你的 forkorigin git push origin main如果希望一次完成拉取并合并两个动作也可以直接用git pull upstream main文档建议每当 GitHub 提示你的 fork 落后于上游几个提交时就应执行上述同步。这与本文的分支清理正好构成一个完整的贡献循环同步 → 建分支 → 贡献 → 提 PR → 合并后删分支 → 再同步。小结分支清理的完整命令速查操作命令适用场景查看当前分支git status任何时刻确认所在分支切换到主分支git checkout master或git switch main开始清理前合并功能分支git merge add-your-name将贡献并入主分支安全删除本地分支git branch -d add-your-name分支已合并推荐Git 会做安全检查强制删除本地分支git branch -D add-your-name分支未合并但确定可丢弃删除 fork 远程分支git push origin --delete add-your-name对应 Pull Request 已被合并后与上游保持同步git fetch upstream git rebase upstream/main git push origin main定期维护 fork 与本地仓库相关配套材料还可继续参考 additional-material.md 中列出的其他 Git 工作流场景如 delete-branch-locally.md、why-using-branches.md、resetting-a-branch.md 等。掌握建分支—贡献—合并—删分支—同步的完整循环你就具备了参与任意开源项目时最基础、最常用的协作能力。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考