![清理分叉存储库中的上游分支是否安全?](https://linux22.com/image/1611930/%E6%B8%85%E7%90%86%E5%88%86%E5%8F%89%E5%AD%98%E5%82%A8%E5%BA%93%E4%B8%AD%E7%9A%84%E4%B8%8A%E6%B8%B8%E5%88%86%E6%94%AF%E6%98%AF%E5%90%A6%E5%AE%89%E5%85%A8%EF%BC%9F.png)
当我 fork 一个存储库时,上游存储库的所有分支都会随之而来。有时,当我真正关心的只是自己正在处理的分支时,上游分支的数量会非常多。当我可以在本地存储库中设置两个远程存储库时,在两个存储库中拥有相同的分支似乎有些多余。
例如:
存储库 A 有分支 A1、...、A1000。当我在 GitHub 中 fork 此存储库时,我得到了一个具有相同分支(A1、...、A1000)的新存储库 B。我希望存储库 B 只包含我正在处理的分支(例如 B1 和 B2)。
是否可以(甚至建议)从我的 fork 中删除上游分支,以使我和我的团队的工作更简单/更清晰(即,我们 fork 中的唯一分支是我们正在处理的分支)?我是否至少仍然需要来自上游存储库的默认分支?
答案1
是否有可能(甚至建议)从我的 fork 中删除上游分支,以使事情对我和我的团队更简单/更干净(即,我们 fork 中唯一的分支是我们正在处理的分支)?
虽然从 fork 中删除上游分支并不是必需的,但绝对是可能的。当您fork 存储库时,它只会克隆默认分支(除非您指定分支名称,否则它会克隆该名称)。除非您指定所需的特定分支或 ,git clone
否则其他分支的历史记录甚至不会在本地存在。git fetch
git fetch --all
换句话说,删除这些上游分支不会显著改善您的工作流程。我能想到的唯一好处是,如果要筛选的分支较少,您可能会更容易找到感兴趣的分支。
无论如何,删除远程分支的命令(如果存在,这不会在本地删除相应的分支)是git push origin :branchToBeDeleted
。
可以使用 删除本地分支(仅在本地存储库上,而不是远程分支)git branch -d branchToBeDeleted
。
我至少还需要来自上游存储库的默认分支吗?
简而言之,建议保留默认分支。我认为git
不会让您使用上面提供的语法删除默认远程分支(正如有人在这里尝试过的那样):
remote: error: refusing to delete the current branch: refs/heads/master
To [email protected]:<user>/<repo>.git
! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to '[email protected]:<user>/<repo>.git'
如果您不想保留默认分支,请进入 GitHub 或您使用的任何 Git 托管平台中该存储库的设置,然后更改默认分支,然后再尝试删除相关分支。