一开始,我只有主分支。
然后我使用以下命令创建一个新分支:
git branch 'branch1'
然后我将一些文件添加到branch1并将其合并到master。然后执行以下命令删除 branch1 。
git branch -d branch1
然后在本地,我现在只能看到主分支。但是在GitHub上,我仍然可以在分支列表中看到branch1。
我仍然可以检查branch1虽然我删除了它。
为什么?
答案 0 :(得分:3)
这是因为你将分支推送到github而git branch -d BRANCHNAME
只在本地删除分支,而github指针保持不变。如果你想在github上删除它,你可以git push origin :BRANCHNAME
(注意冒号,这也就是假设“origin”是你的github repo,afaik是默认的)
有关该命令的更多信息,请参阅this。
答案 1 :(得分:3)
如果您是唯一使用此GitHub存储库的人,则必须在某个时刻推送branch1
,可能使用git push origin branch1
或类似内容。
作为Alexander says,您可以使用以下命令从GitHub中删除分支branch1
:
git push origin :branch1
...但是要删除您应该执行的远程跟踪分支origin/branch1
:
git remote prune origin
有趣的是,您仍然可以结帐branch1
,大概是:
git checkout branch1
...即使您删除了本地分支。事实证明,这是因为,从v1.6.6开始,当你试图检查一个不存在的分支时,git会尝试猜测你的意思,但是只存在一个具有匹配名称的远程跟踪分支。这是由git维护者Junio C Hamano在this commit中引入的:
DWIM“git checkout frotz”改为“git checkout -b frotz origin / frotz”
当'frotz'不是有效的对象名称而不是跟踪的文件名时, 我们曾经抱怨并且失败了这个命令。什么时候才有 一个遥控器将'frotz'作为其跟踪分支之一,我们可以 将它作为创建本地分支'frotz'forking的请求进行DWIM 匹配的远程跟踪分支。
这对我来说有点意外,git checkout
手册页中没有提及。
答案 2 :(得分:1)