web-dev-qa-db-ja.com

git delete remotes:リモート参照は存在しません

要するに;

  • リモートの複数のマージ済みリモートを削除するにはどうすればよいですか?

より多くの背景;

マスターにマージされた数十のリモートを備えたgitリポジトリがあります。以下を使用して、これらのリモートを一度に1つずつ削除できます。

git Push --delete Origin myBranch-1234

ただし、これはすべてのリモートにとって時間のかかる退屈なプロセスです。だから私はこのコマンドを試しています:

git branch -r --merged | grep Origin | grep -v master | xargs git Push Origin --delete

git branch -r --mergedは、すべてのマージされたリモートをリストします。
grep Originは、コマンドにOriginを含めるように指示します。
grep -v masterは、マスターを除外するようコマンドに指示します。
xargs git Push Origin --deleteは、リモートのリストを削除するようコマンドに指示します。

すべて一緒に、私はこれがすべてのマージされたリモートを収集し、それらを削除することを期待しています。

上記のコマンドを実行すると、マージされたリモートごとに次のメッセージが表示されます。

error: unable to delete 'Origin/myBranch-1234': remote ref does not exist
error: unable to delete 'Origin/myBranch-1235': remote ref does not exist
error: unable to delete 'Origin/myBranch-1236': remote ref does not exist
error: unable to delete 'Origin/myBranch-1237': remote ref does not exist
... etc

ただし、これらのリモートは存在しているので、それぞれをチェックアウトできます。多くのサイトや人々は、git fetch --Pruneを実行して欠落している参照をクリーンアップすることを推奨しています。これらのリモートはすべて存在するため、これは何もしません。

スタック交換をお願いします。

  • 1つのリモートを削除できますが、多くはできません。
  • 私のコマンドは正しいですか?

小さいものが足りないと思います。これを調査するたびに、これを正しく行っているように見えますが、上記のエラーが発生しています。

94
Jqw

最初に、リモートブランチのローカル「キャッシュ」を整理する必要がある場合があります。実行してみてください:

git fetch -p Origin

削除する前に。

198
Igor

それらのブランチはリモート(Origin)から削除されていますか?はいの場合は、単に行うことができます

git fetch --Prune Origin

そうしないと、ローカルで削除した後でも返される場合があります。

更新:コマンドをもう一度見ると、誤ってビルドしているようです。あなたはおそらく欲しい

git Push Origin --delete myBranch-1234

代わりにあなたは次のようなことをしています

git Push Origin --delete Origin/myBranch-1234
88
Mykola Gurov

sedを使用して、「Origin /」部分を削除し、lttile xargs部分を変更します。

git branch -r --merged | grep Origin | grep -v -e master | sed s/Origin\\/// |  xargs -I{} git Push Origin --delete {}
12
kost