这可能是一个愚蠢的问题,但我是git的新手,我看到一个不再存在的远程分支.
$ git branch -a
* master
  remotes/origin/master
  remotes/origin/production
我不相信生产分支存在远程,也无法弄清楚为什么它仍然在本地显示.如何删除/删除此分支?这是尝试删除它的样子:
$ git push origin :production
error: unable to push to unqualified destination: production
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@IP:puppet.git'
我可以检查所谓的远程生产分支,但得到这个:
$ git checkout origin/production
Note: checking out 'origin/production'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
  git checkout -b new_branch_name
HEAD is now at c323996... added powerdns module, no really
我不知道我在做什么.任何帮助,将不胜感激.
man*_*lds 313
你必须做:
git remote prune origin
Pab*_*rin 53
所以有两个问题.在这两种情况下,请记住Git是分发的.
第一.当你做的事情
$ git branch -a
操作在您的本地存储上执行,而不是在远程计算机上执行.换句话说,您的本地仓库报告了所有知道的分支.这些可以是本地分支(如"主")或从远程获取的远程分支.自上次获取以来,远程仓库的"生产"分支已更改,但您的本地仓库不知道这一点.来自manojlds的答案是正确的.跑
$ git远程修剪原产地
删除陈旧的分支.
'git push origin:production'命令用于从远程计算机的git repo中删除分支.不是你当地的回购.在这种情况下,其他人已经删除了远程计算机的git仓库上的分支,因此您会看到此错误消息.
这是一个总结这些命令的链接.
第二个问题涉及结账.
签出分支时,您希望从本地分支而不是远程分支执行此操作.这就是为什么你得到关于分离的HEAD的错误.该混帐票据回购在血淋淋的细节问题的一个很好的解释.基本上关键词是
但是,当您签出任何不合适的本地分支名称时,HEAD不再是对任何东西的符号引用.相反,它实际上包含您要切换到的提交的SHA-1哈希(提交ID).
现在,如何检查本地分支,这与远程分支相同?
很容易,你在结账远程分支时创建一个本地分支.
$ git checkout -b my_local_branch origin/production
小智 18
git remote prune origin
是的,只是添加你可以使用--dry-run选项,报告将从你的本地仓库修剪哪些分支,但实际上没有修剪它们
git remote prune origin --dry-run