提交PR执行git rebase强制推送后是否需要手动删除孤儿提交?
孤儿提交的定义
你操作中产生的孤儿提交(也常被称为悬空提交),指的是没有被任何分支、标签、reflog等Git引用指向的提交对象。
Git执行git rebase -i这类修改提交历史的操作时,不会直接修改原有提交的内容,而是会基于你修改的配置生成一系列全新的提交对象,你操作前的那2次旧提交失去了当前分支的引用指向后,就变成了孤儿提交。
是否需要手动清理
无论是本地环境还是GitHub远程端,都不需要你手动清理这些孤儿提交:
- 本地Git内置了自动垃圾回收机制,默认会定期清理存在时间超过30天的悬空对象,这些提交只会占用极少的存储空间,也不会干扰任何正常Git操作,完全可以忽略。如果你确实想要立刻清理,也可以手动执行
git gc --prune=now,但这个操作完全没有必要。 - GitHub远程端自身也会定期运行垃圾回收任务,自动清理没有任何引用指向的悬空提交。这些提交只有知晓完整哈希值的人才能访问,既不会公开显示在仓库页面,也不会影响仓库的正常运行,不需要你做额外处理。
是否需要仓库维护者处理
不需要。这些孤儿提交对上游仓库的正常使用、其他开发者的协作操作没有任何影响,维护者完全感知不到这些提交的存在,也不需要做任何额外操作。
你当前的操作场景下没有其他开发者基于你的旧提交做开发,强制推送变基后的分支不会带来任何协作问题,完全符合规范。
内容的提问来源于stack exchange,提问作者rohitt
相关产品推荐
相关产品推荐

