31

リモート リポジトリと 2 つのクローンがあります。
クローンの1つにブランチを作成しますtest。私はいくつかの作業と2つのコミットを行います。master枝と枝に合併しpush -uます。
私はgit pull他のクローンで行います。
と の両方が表示masterされtestます。
最初のクローン プロジェクトでは、リモート リポジトリのブランチ
git origin :testを削除します。リモートリポジトリで削除されます。 私はそうし、ブランチもローカルで削除されます。 もしそうなら、私は得る: test
test
git branch -D testtest
git branch -a

*master  
remotes/origin/master    

次に、2 番目のリポジトリでgit pull.
プルでは、​​ローカルtestは削除されているように見えますが、リモートブランチがまだ存在gitしていると「考えている」ようです。 もしそうなら、私は得る: test
git branch -a

* master  
  remotes/origin/HEAD -> origin/master  
  remotes/origin/master  
  remotes/origin/test    

test削除されたブランチがリモート ブランチとして表示されるのはなぜですか?

4

2 に答える 2

55

git fetch(したがって)のデフォルト オプションは、git pull削除されたリモート ブランチをプルーニングしません。このデフォルトの背後にあるロジックが何であるかはわかりません。いずれにせよ、削除されたリモートブランチを整理するには、次のいずれかでフェッチします

git fetch -p

または実行

git remote prune [-n] <name>

明示的に。フラグを使用-nすると、どのブランチが剪定されるかが報告されますが、実際に剪定されるわけではありません。詳細については、 git-fetch(1)およびgit-remote(1)を参照してください。

于 2013-06-15T22:59:16.370 に答える
13

このコマンドを使用してみてくださいgit remote prune origin。削除されたブランチは消えるはずです。これにより、リモート ブランチへのローカル参照が削除されます。

于 2013-06-15T22:39:05.433 に答える