我有一个项目,有 2 个分支,开发和生产。我没有使用 master 分支,每次我写git status它时都会告诉我我的分支离 master 有多远。
当我尝试删除 master 分支时git branch -d master,它只会在我的本地存储库中删除它,而不是在远程 git 服务器上。有任何想法吗?
mpa*_*r17 34
在 Git 中,分支只是提交的有序列表(又名:签入)。对新用户来说可能有点混乱的是分支不需要有名字(尽管在大多数情况下你想要一个);并且任何特定分支都没有什么特别之处(该master分支只是在您初始化存储库时为您创建的默认分支)。
您可能已经知道这一点,但是 Git 与其他一些版本控制系统(例如流行的“Subversion”)不同,因为每个“工作副本”(Subversion 语言)都是它自己的存储库……实际上,没有什么特别的任何特定副本的特别之处;除了一个副本已被普遍认可为用于存储最终产品的“规范”副本。
因此,回到您的问题……您在启动本地副本时克隆的“规范”存储库默认包含一个“主”分支;它被困住了。现在,如果您可以访问包含主存储库的计算机,您可以登录并运行:
git branch -d master
Run Code Online (Sandbox Code Playgroud)
但是,如果您无法做到这一点,您仍然可以从您的本地机器上做到这一点。该git branch命令有一个-r影响远程存储库的选项。换句话说,运行以下命令应该可以工作:
git branch -d -r master
Run Code Online (Sandbox Code Playgroud)
请注意,在这两种情况下;我假设它master已完全合并到您的本地副本当前所在的开发历史中。如果您以前从未使用master过(即:您只登记过development或production),则无需担心。但是,如果您(或其他人)一直在将事情签入master,那么您可能会遇到问题。您可以通过更改上述命令中的-dto来强制删除-D;但我强烈建议先检查一下里面有什么master!如果您无权访问远程计算机,则可能无法恢复它!
顺便一提; 如果您(或其他任何人)不熟悉Git,我强烈建议您阅读John Wiegley 的自下而上的 Git。尽管在发现这篇文章之前我自己也使用过 Git,但直到我读到它时我才真正理解它是如何工作的。它非常有用!