Git:リモートブランチ情報の更新


125

gitリポジトリで、追跡していないリモートブランチが削除されました。入力すると

git branch -r

削除されたブランチはまだ表示されます(そしてチェックアウトできます)

この情報を更新するには、どのgitコマンドを実行する必要がありますか?

回答:


39

次のようなことをした場合

git branch -d -r remote_name/branch_name

ローカルチェックアウトのみを削除します。このコマンドはリモートリポジトリに対して何も実行しないため、引き続き表示されます。

解決:

git push origin :branch_name

リモートブランチを削除します( ':'に注意してください)。

git branch -d branch_name

ローカルチェックアウトを削除します。

参考


146
「git remote prune origin」を実行して、リモート参照をクリーンアップすることもできます。
cmcginty 2010

3
これにより、リモートリポジトリで追跡されなくなったすべてのブランチが削除されます。したがって、注意してください。
ギャレットハイド

4
もう少し冗長ではありますがgit push <remote> --delete <branchname>、リモートブランチの削除にも使用できることも知っておくと便利です。
AeroCross 2012年

これは通常は機能しますが、今日、リモートリストが更新されなかった状況に遭遇したため、存在しないブランチを削除しようとしました。したがって、以下の @Floのソリューションが最初に必要でした。
dgo 2016年

284

削除されたのがリモートリポジトリ内のブランチであり、すべてのローカルリモート追跡ブランチを一度に更新したい場合は、

$ git remote prune <remotename>

特定のリモートの古いリモート追跡ブランチ(つまり、リモートリポジトリで削除されたブランチに続くブランチ)をすべて削除します。

git remoteドキュメントを参照してください。


@Caseyと@Jakubに回答いただきありがとうございます。ローカルに保存されているリモートブランチ情報が次回使用するときに更新されないのはgit fetchなぜですか?
JJD 2011年

4
@JJD:もうここにないリモートブランチに基づいて作業している可能性があるためです。したがって、要求せずに消滅することは悪い考えであると考えられていました。そのため、リモート追跡ブランチを明示的にプルーニングする必要があります。
JakubNarębski、2011年

「git gc」は古いリモートブランチもクリーンアップしますか?
James Wald、

@JamesWald:いいえ、ありません。 git gcオブジェクトと参照をパックし、参照されていないオブジェクトを削除します(安全マージンを確保)。
JakubNarębski12年

186
git remote update --prune

すべてのリモートのブランチを更新し、新しいブランチを追加し、削除されたブランチを削除する必要があります。

編集:リモート更新コマンドは、基本的にリモート上のブランチのリストをフェッチします。この--pruneオプションは、リモートに存在しなくなったブランチを指すローカルリモートトラッキングブランチを削除します。


これでうまくいきました。何らかの理由で通常の 'git push origin:<branch_name>'で削除できなかったリモートブランチを削除する必要がありました
n0denine

この答えは、ヤクブナロブスキーの答えと同じか、それ以上のことをするのは間違いないでしょうか。つまり、プルーニングて更新をフェッチしますか?
フランク・タン

14

新しいリモートブランチを表示する場合にも役立ちます。

git fetch --all

これは私を大いに助けました。Visual Studio gitのいくつかのバグにより、複製後に作成された新しいブランチが表示されません。このコマンドは、新しいブランチの表示に役立ちます
Venkatesh Muniyandi

nice n simple thxおい、家にブロンズの解答バッジがある:)
danday74

2

-r-dフラグを組み合わせて、リモートブランチを削除できます。


素晴らしいヒント!ただし、この場合、すでに削除されたブランチがいくつかあります。これらの更新をフェッチするコマンドがあります
Bain Markev

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