Git 分支如何工作?我可以删除主分支吗?

Git 分支如何工作?我可以删除主分支吗?

我有一个项目,它有 2 个分支,开发和生产。我没有使用主分支,每次我写入时,git status它都会告诉我我的分支距离主分支有多远。

当我尝试删除主分支时,git branch -d master它只会在本地存储库中删除它,而不会在远程 git 服务器上删除它。有什么想法吗?

答案1

在 Git 中,分支只是提交(又称签入)的有序列表。对于新用户来说,可能有点令人困惑的是,分支不需要有名称(尽管在大多数情况下您需要一个名称);并且任何特定分支都没有什么特别之处(分支master只是在您初始化存储库时为您创建的默认分支)。

您可能已经知道这一点,但是 Git 与其他一些版本控制系统(例如流行的“Subversion”)不同,因为每个“工作副本”(在 Subversion 语言中)都是它自己的存储库……事实上,任何特定副本都没有什么特别之处;除了一个副本被普遍认可为用于存储最终产品的“规范”副本。

所以,回到你的问题...启动本地副本时克隆的“规范”存储库默认包含一个“主”分支;并且它一直存在。现在,如果你有权访问包含主存储库的计算机,你可以登录并运行:

git branch -d master

但是,如果您无法执行此操作,您仍然可以从本地计算机执行此操作。该git branch命令有一个-r影响远程存储库的选项。换句话说,运行以下命令应该有效:

git branch -d -r master

请注意,在这两种情况下;我假设master已经完全合并到您本地副本当前的开发历史中。如果您master以前从未使用过(即:您只签入过developmentproduction),则无需担心。但是,如果您(或其他人)已将内容签入,则可能会遇到问题。您可以通过将上述命令中的更改master为来强制删除;但我强烈建议您事先检查一下!如果您无权访问远程计算机,则可能无法恢复它!-d-Dmaster


顺便说一句,如果你(或任何人)刚接触 Git,我强烈建议你阅读John Wiegley 撰写的《从底层开始的 Git》。虽然在找到这篇文章之前我已经自己使用过一点 Git,但直到我读了它,我才真正明白它是如何工作的。它非常有用!

答案2

master是 git 的默认分支。我不知道为什么当 git 告诉你距离 master 还有多远时你会觉得这么糟糕,但是如果你想删除远程存储库上的分支,在本地删除它是不够的。试试这个:

git push origin :master

这不会将任何内容(冒号之前的部分)推送到您的原始服务器并覆盖 master。换句话说,它应该远程删除 master 分支。

相关内容