清理分叉存储库中的上游分支是否安全?

清理分叉存储库中的上游分支是否安全?

当我 fork 一个存储库时,上游存储库的所有分支都会随之而来。有时,当我真正关心的只是自己正在处理的分支时,上游分支的数量会非常多。当我可以在本地存储库中设置两个远程存储库时,在两个存储库中拥有相同的分支似乎有些多余。

例如:

存储库 A 有分支 A1、...、A1000。当我在 GitHub 中 fork 此存储库时,我得到了一个具有相同分支(A1、...、A1000)的新存储库 B。我希望存储库 B 只包含我正在处理的分支(例如 B1 和 B2)。

是否可以(甚至建议)从我的 fork 中删除上游分支,以使我和我的团队的工作更简单/更清晰(即,我们 fork 中的唯一分支是我们正在处理的分支)?我是否至少仍然需要来自上游存储库的默认分支?

答案1

是否有可能(甚至建议)从我的 fork 中删除上游分支,以使事情对我和我的团队更简单/更干净(即,我们 fork 中唯一的分支是我们正在处理的分支)?

虽然从 fork 中删除上游分支并不是必需的,但绝对是可能的。当您fork 存储库时,它只会克隆默认分支(除非您指定分支名称,否则它会克隆该名称)。除非您指定所需的特定分支或 ,git clone否则其他分支的历史记录甚至不会在本地存在。git fetchgit 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 托管平台中该存储库的设置,然后更改默认分支,然后再尝试删除相关分支。

相关内容