Gitリモートブランチは削除されましたが、「branch -a」に表示されます


552

coolbranchリポジトリに名前の付いたブランチがあるとしましょう。

今、私はそれを(リモートとローカルの両方で)削除することにしました:

git push origin :coolbranch
git branch -D coolbranch

すごい!これでブランチは本当に削除されました。

でも走ると

git branch -a

私はまだ得ます:

remotes/origin/coolbranch

気が付くのは、新しいリポジトリのクローンを作成すると、すべて問題git branch -aなく、ブランチが表示されないことです。

知りたい- branch -a新しいインスタンスを複製せずにリストからブランチを削除する方法はありますか?



58
あなたgit fetch -p(またはgit pull -p)の場合、リモートブランチはプルーニングされます。
ヨーヨー

回答:


688

git remote prune origin、他の回答で提案されているように、そのような古いブランチをすべて削除します。ほとんどの場合、これで十分ですが、特定のリモート追跡ブランチを削除するだけの場合は、次のようにします。

git branch -d -r origin/coolbranch

-r忘れがちです...)

-rこの場合、「-dリモート追跡ブランチを一覧表示または削除します(と一緒に使用する場合)」。ここにあるGitのドキュメントによると:https : //git-scm.com/docs/git-branch


11
git remote prune originまたはgit fetch --prune、私の場合、どのような形の報告も機能しませんでした。...でもgit branch -d -r origin/feature/branch-nameうまくいきました。それが下にあるに何かあったら、私はよく分からないfeature名前空間(gitのフロー)が、任意のGooglerはそれが彼らに起こる見つける場合には、それは、それがダウンした方法です。
Misterparker

8
これが必要な理由はありますか?これらの存在しないブランチ名をリストに残し、自動的に枝刈りしないのは本当に悪いようです。
akronymn 2017

296

試してください:

git remote prune origin

以下からのGitのリモートドキュメント

プルーン

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

--dry-runオプションを使用して、枝刈りするブランチを報告しますが、実際には枝刈りしません。


1
完全をgit pull --prunegit remote update --prune
期す

230

素晴らしいことを忘れないでください

git fetch -p

すべてのオリジンをフェッチしてプルーニングします。


完全を期すgit remote prune originために、それはそれぞれgit pull --prunestackoverflow.com / a / 6127884/94687およびstackoverflow.com/a/17983126/94687で言及されているものと同じで類似している必要があります。そして:git remote update --prune
imz-Ivan Zakharyaschev 2015

2
しかし、git branch -a
Nikhil Sahu

1
@NikhilSahu:で削除されたリモートブランチが表示されないgit branch -a
user276648 '20

20

今回のケースでは、StashをリモートGitリポジトリとして使用します。以前の答えをすべて試しましたが、何も機能しませんでした。私たちは次のことをしなければならなくなりました:

git branch –D branch-name (delete from local)
git push origin :branch-name (delete from remote)

次に、ユーザーが変更をプルするときに、次のことを行う必要がありました。

git fetch -p

git branch -d branch-name私のために働いた。に注意-Dしてください-d。実際、大文字のD -Dで試したところ、-D
RP-

1
「-D」は、プッシュまたはマージのステータスに関係なく、強制的に削除する方法です。明らかに使用には注意が必要ですが、多くの場合、それは必要でした。
Shadowvail 2019

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.