1. ホーム
  2. git

[解決済み] Gitから無効なリモートブランチの参照を削除するには?

2022-03-22 02:50:28

質問

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

$ 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

解決方法は?

クリーンアップが必要かもしれません。

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