私の現在のリポジトリでは、私は次のような出力があります。
$ 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.
また、public
がリストされていないため、git remote
の出力は奇妙です。
$ 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
クリーンアップが必要な場合があります
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
はローカル追跡ブランチをnukingするのに十分です、またはgit Push Origin :badbranch
はリモートブランチをnukingするのに十分です、そして通常nevergit gc
を呼び出す必要はありません
あなたがする必要があるのはただ
git fetch -p
リモートで削除されているすべてのローカルブランチが削除されます。
あなたがgit 1.8.5+を使っているなら、あなたはこれを自動的に設定することができます
git config fetch.Prune true
または
git config --global fetch.Prune true
git Push public :master
Kent Fredricが指摘したように、これはmaster
という名前のリモートブランチを削除します。
リモートトラッキングブランチを一覧表示するには
git branch -r
リモートトラッキングブランチを削除するには
git branch -rd public/master
あなたがする必要があるのはただ
$ git branch -rd Origin/whatever
それはとても簡単です。ここでgcを呼び出す必要はありません。
git gc --Prune=now
はあなたが望むものではありません。
git remote Prune public
リモートソースの場合はgit remote Prune Origin
#
あなたが欲しいものです
参照が詰まったときに受け入れられた答えは私のために動作しませんでした。しかしこれは:
$ git remote add public http://anything.com/bogus.git
$ git remote rm public
私の場合、.git/packed-refs
に保存されたエントリを削除しようとしていました。このプレーンテキストファイルを編集して、git br -D
がタッチ方法を知らないエントリを削除することができます(少なくともver 1.7.9.5では)。
私はここでこの解決策を見つけた: https://stackoverflow.com/a/11050880/1695680
git Push Origin --delete <branch name>
参照元: http://www.gitguys.com/topics/adding-and-removing-remote-branches/ /
私は同様の問題を抱えていました。答えのどれも助けにはならなかった。私の場合は、削除された2つのリモートリポジトリが永久に表示されていました。
私の最後のアイデアはそれへの参照をすべて手で削除することでした。
リポジトリは“ Repo”と呼ばれるとしましょう。やった:
find .git -name Repo
対応するファイルとディレクトリを削除しました
grep Repo -r .git
これにより、対応する行を削除したテキストファイルがいくつか見つかりました。今、すべてが問題ないようです。
通常、この仕事はgitに任せるべきです。
ほんの少しだけ関連がありますが、私たちが持っていたのと同じ状況ではまだ役に立つかもしれません - 私たちのリモートリポジトリにはネットワークファイル共有を使います。先週、物事はうまくいっていました、今週我々はエラーを得ていました「リモートオリジンはブランチレファレンス/ヘッド/マスターのためにレファレンスをアドバタイズしませんでした。
しかし、私たちは物事を汚すために何もしていないと信じていました。 NFSはスナップショットを作成するので、それぞれの「以前のバージョン」を確認し、3日前にリポジトリのサイズが282MBから33MBになり、約1,403の新しいファイルと300のフォルダが存在することがわかりました。同僚に問い合わせたところ、その日にプッシュを実行しようとしていましたが、キャンセルしました。
私はそれをその日付の直前に復元するためにNFSの「復元」機能を使用し、そして今やすべてが再び正常に動作しています。私は以前にプルーンを試してみました、助けにはならないようでした。もっと厄介なクリーンアップがうまくいったかもしれません。
これがいつか他の人に役立つことを願っています!
ジェイ
私はgit branch -rd
について知らなかったので、私が自分でこのような問題を解決した方法は自分のリポジトリをリモートリポジトリとして扱い、リモート削除をすることです。 git Push . :refs/remotes/public/master
。他の方法がうまくいかず、あなたが取り除きたいと思う奇妙な参照があるのなら、この生の方法は確かです。それはあなたにどんな種類の参照を削除する(または作成する)正確な精度を与えます。