23

方法を聞かないでください、しかし私はgitリポジトリで誤って次のリモートブランチを取得することができました:

$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  origin/refs/heads/master

すべてが同じコミットを指しています。の不要なリストを削除するにはどうすればよい origin/refs/heads/masterですか?

私は次のことをしようとしました

$ git push origin :refs/heads/master
error: dst refspec refs/heads/master matches more than one.

しかし、示されているように、これはエラーになります。

4

3 に答える 3

45

これは実際にはリモート上のブランチではありません。origin/masterがリモート上のマスターブランチを表すのと同じように、リモート上の何かを表すと主張するのは単なるローカル参照です。refのフルネームはですrefs/remotes/origin/refs/heads/master。それを削除するためにあなたがしなければならないのは:

git branch -r -d origin/refs/heads/master

これもプッシュすることができた可能性は漠然としています(しかし、そうするためにさらに一生懸命努力しなければならなかったでしょう)。もしそうなら、私は単に原産地の参照をリストします:

git ls-remote origin

そして、そこに愚かなことがあれば、それgit push origin :<refname>を取り除くために使用します。

PSこれでうまくいかない場合は、すべての参照を表示しgit for-each-ref、場合によってはすべてのリモート参照を表示し、完全に修飾されたものを使用して、属していないものを正確git ls-remote originに追跡する必要があります。 refnames。

于 2011-02-03T20:12:56.780 に答える
20

解決策は、ブランチを削除することでしたrefs/heads/refs/heads/master

git push origin :refs/heads/refs/heads/master
于 2011-02-07T10:45:07.643 に答える
4

これは

git branch -r -d origin/ref/heads/master

それ以外の

git branch -r -d origin/refs/heads/master 

コード部分でブランチを削除します。コード内のrefワードに違いがあります。

于 2012-03-17T06:12:54.720 に答える