web-dev-qa-db-ja.com

リモートOrigin / refs / heads / masterを削除する方法

どのように私に尋ねないでください、しかし私は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.

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

20
Peter Smit

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

git Push Origin :refs/heads/refs/heads/master
17
Peter Smit

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

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

なんとかこれをプッシュすることもできた可能性があります(しかし、そうするためにさらに努力する必要があったでしょう)。もしそうなら、私は単にOriginのリファレンスをリストします:

git ls-remote Origin

そして、そこに馬鹿げたことがあったら、それを取り除くためにgit Push Origin :<refname>を使います。

追伸これでうまくいかない場合は、git for-each-refを使用してすべての参照を表示し、場合によってはgit ls-remote Originを使用してすべての参照を表示し、追跡してください正確に完全修飾参照名を使用して、属していないもの。

40
Cascabel

それは

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

の代わりに

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

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

4
jecky dalal