Git ls-remote中的refs / head的双重输入

时间:2011-04-14 19:04:18

标签: git

当我跑步时

$ git
ls-remote
git@foo:bar.git 

我得到了

6826f9697d4b887a0eaa1aaf9338dee23569970a    HEAD
90ff949b16803724913bb85a72e57c4e5d4c4625    refs/head/master
6826f9697d4b887a0eaa1aaf9338dee23569970a    refs/heads/master

看起来refs / head / master不应该在那里,而且它正在搞乱我使用capistrano的部署,因为它正在检查它找到的第一个主人。如何查看其中包含的内容并将其删除?

1 个答案:

答案 0 :(得分:3)

是的,refs/head/master不应该在那里。当他们想要推到refs/head/master时,看起来有人不小心被推到了refs/heads/master

你可以用以下内容拉出你搞砸的主人的内容:

git fetch git@foo:bar.git refs/head/master:broken-master

这将为您提供一个本地分支broken-master,其中包含服务器上包含的错误引用。一旦您已经令人满意地合并了可能已经卡在那里的任何东西,并准备在服务器上删除它,您可以执行以下操作来删除服务器上的损坏分支。

git push git@foo:bar.git :refs/head/master

根据服务器设置,您可能需要使用-f标志强制服务器删除分支。

您可能还想使用git branch -d broken-master来清理您用于检查搞砸参考内容的临时本地分支,只要您已将所有内容合并或认为可以放弃