マスターにマージされた数十のリモートを備えた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
を実行して欠落している参照をクリーンアップすることを推奨しています。これらのリモートはすべて存在するため、これは何もしません。
小さいものが足りないと思います。これを調査するたびに、これを正しく行っているように見えますが、上記のエラーが発生しています。
最初に、リモートブランチのローカル「キャッシュ」を整理する必要がある場合があります。実行してみてください:
git fetch -p Origin
削除する前に。
それらのブランチはリモート(Origin)から削除されていますか?はいの場合は、単に行うことができます
git fetch --Prune Origin
そうしないと、ローカルで削除した後でも返される場合があります。
更新:コマンドをもう一度見ると、誤ってビルドしているようです。あなたはおそらく欲しい
git Push Origin --delete myBranch-1234
代わりにあなたは次のようなことをしています
git Push Origin --delete Origin/myBranch-1234
sed
を使用して、「Origin /」部分を削除し、lttile xargs
部分を変更します。
git branch -r --merged | grep Origin | grep -v -e master | sed s/Origin\\/// | xargs -I{} git Push Origin --delete {}