現在のリポジトリでは、次の出力があります。
$ git branch -a
* master
remotes/origin/master
remotes/public/master
remotes/public/master
ブランチリストから削除したいもの:
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
また、 の出力は がgit remote
リストされていないため奇妙ですpublic
。
$ git remote show
origin
ブランチリストから「remotes/public/master」を削除するにはどうすればよいですか?
更新、git push
コマンドを試しました:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
ベストアンサー1
クリーンアップが必要になる場合があります:
git gc --prune=now
または、剪定が必要かもしれません:
git remote prune public
プルーン
<name> の下にある古い追跡ブランチをすべて削除します。これらの古いブランチは、<name> によって参照されるリモート リポジトリから既に削除されていますが、ローカルでは "remotes/<name>" で引き続き使用できます。
--dry-run オプションを使用すると、どのブランチが剪定されるかを報告しますが、実際には剪定は行いません。
しかし、これらはもっと早くに片付けるべきだったようだ。
git remote rm public
rm
<name> という名前のリモートを削除します。リモートのすべてのリモート追跡ブランチと構成設定が削除されます。
したがって、設定ファイルを手動で編集したためにこの問題が発生しなかったか、権限の問題がある可能性があります。
もう一度実行して何が起こるか見てみましょう。
アドバイスのコンテキスト
見てみると改訂ログ、私が提案したより「正しい」テクニックが、何らかの理由で彼らのリポジトリでは機能しなかったことに気づくでしょう。
私は、OP が何かを行ったためにツリーが一貫性のない状態になり、ツリーの動作が少しおかしくなり、git gc
残された不要な部分を修正する必要があったのではないかと疑いました。
通常、 git branch -rd origin/badbranch
ローカルの追跡ブランチを削除するか、git push origin :badbranch
リモートブランチを削除するには十分であり、通常は呼び出す必要はありません。git gc