795

現在のレポでは、次の出力があります。

$ 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
4

13 に答える 13

793

クリーンアップが必要な場合があります。

git gc --prune=now

または、プルーンが必要な場合があります。

git remote prune public

プルーン

<name> の下にあるすべての古い追跡ブランチを削除します。これらの古いブランチは、<名前> で参照されているリモート リポジトリから既に削除されていますが、ローカルの "remotes/<名前>" で引き続き利用できます。

--dry-run オプションを使用すると、どのブランチが剪定されるかを報告しますが、実際にはそれらを剪定しません。

ただし、これらは以前にクリーンアップする必要があったようです

git remote rm public 

RM

<名前> という名前のリモートを削除します。リモートのすべてのリモート追跡ブランチと構成設定が削除されます。

したがって、構成ファイルを手動で編集したためにこれが発生しなかったか、権限の問題がある可能性があります。

もう一度実行して、何が起こるか見てみましょう。


アドバイスの文脈

リビジョン ログを見ると、何らかの理由でリポジトリで作業したくない、より「正しい」手法を提案したことに気付くでしょう。

OPがツリーを一貫性のない状態のままにして、少し奇妙な動作をさせたのではないかと疑っておりgit gc、残ったクラフトを修正する必要がありました。

通常 git branch -rd origin/badbranch、ローカル トラッキング ブランチgit push origin :badbranchを nuking したり、リモート ブランチを nuking したりするのに十分であり、通常、呼び出す必要はありません。git gc

于 2009-07-02T02:42:05.450 に答える
736

あなたがする必要があるのは、

git fetch -p

リモートで削除されたすべてのローカル ブランチが削除されます。

git 1.8.5+ を使用している場合は、これを自動的に設定できます

git config fetch.prune true

また

git config --global fetch.prune true
于 2011-11-24T10:38:43.817 に答える
334
git push public :master

masterこれにより、Kent Fredric が指摘した名前のリモート ブランチが削除されます。

リモート追跡ブランチを一覧表示するには:

git branch -r

リモート追跡ブランチを削除するには:

git branch -rd public/master
于 2009-07-02T02:47:21.790 に答える
173

あなたがする必要があるのは、

$ git branch -rd origin/whatever 

それはとても簡単です。ここで gc を呼び出す理由はありません。

于 2011-07-07T20:59:19.027 に答える
73

git gc --prune=nowあなたが望むものではありません。

git remote prune public

またはgit remote prune origin#それがリモートソースの場合

あなたが欲しいものです

于 2010-06-08T18:18:35.240 に答える
32

refがパックされたとき、受け入れられた答えはうまくいきませんでした。ただし、これは次のことを行います。

$ git remote add public http://anything.com/bogus.git
$ git remote rm public
于 2011-01-12T04:21:17.477 に答える
8

私の場合、に保存されたエントリを削除しようとしていました.git/packed-refs。このプレーンテキストファイルを編集してgit br -D、タッチする方法がわからないエントリを削除できます (少なくともバージョン 1.7.9.5 では)。

ここでこのソリューションを見つけました:https://stackoverflow.com/a/11050880/1695680

于 2014-12-01T23:47:29.300 に答える
5
git push origin --delete <branch name>

参照元: http://www.gitguys.com/topics/adding-and-removing-remote-branches/

于 2014-10-02T18:28:26.740 に答える
3

について知らなかったgit branch -rdので、このような問題を自分で解決した方法は、レポをリモート レポとして扱い、リモート削除を行うことです。git push . :refs/remotes/public/master. 他の方法が機能せず、削除したい奇妙な参照がある場合は、この生の方法が確実です。あらゆる種類の参照を削除 (または作成!) するための正確な精度が得られます。

于 2015-05-08T23:14:17.183 に答える
2

同様の問題がありました。答えはどれも役に立ちませんでした。私の場合、削除された 2 つのリモート リポジトリが永続的に表示されていました。

私の最後のアイデアは、それへのすべての参照を手動で削除することでした。

リポジトリが「レポ」と呼ばれているとしましょう。やった:

find .git -name Repo 

そのため、対応するファイルとディレクトリを .git フォルダーから削除しました (このフォルダーは、Rails アプリまたはコンピューターにあり ます https://stackoverflow.com/a/19538763/6638513 )。

それから私はしました:

grep Repo -r .git

これにより、対応する行を削除したテキスト ファイルがいくつか見つかりました。今、すべてがうまくいっているようです。

通常、このジョブは git に任せるべきです。

于 2014-02-26T10:20:45.963 に答える
2

少しだけ関連がありますが、以前と同じ状況で役立つ可能性があります。リモート リポジトリにネットワーク ファイル共有を使用しています。先週は問題なく機能していましたが、今週は「リモート オリジンがブランチ refs/heads/master の Ref をアドバタイズしませんでした。この Ref はリモートに存在しないか、パーミッション設定によって非表示になっている可能性があります」というエラーが発生しました。

しかし、物事を腐敗させるために何も行われていないと信じていました。NFS はスナップショットを作成するので、各「以前のバージョン」を確認したところ、3 日前に、リポジトリのサイズ (MB) が 282MB から 33MB になり、約 1,403 個の新しいファイルと 300 個のフォルダーが存在することがわかりました。同僚に問い合わせたところ、ある人がその日にプッシュを試みましたが、キャンセルしました。

NFSの「復元」機能を使用して、その日付の直前に復元したところ、すべて正常に機能するようになりました. 私は以前にプルーンを試しましたが、役に立たなかったようです. たぶん、より厳しいクリーンアップが機能したでしょう。

これがいつか他の誰かを助けることを願っています!

ジェイ

于 2017-01-13T18:37:01.330 に答える