15

私は2つのリモートブランチを持っています:

 - pending-issues-in-project
 - new-issues-in-project

このように削除しようとしましたpending-issues-in-project:
git push origin :pending-issues-in-project、しかし、エラーが発生しました:

error: unable to push to unqualified destination: pending-issues-in-project
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.  
error: failed to push some refs to 'git@github.com:forkedRepo/RepoName.git'

ブランチを削除したのではないかと思いましpending-issues-in-projectたが、実行するとリストにブランチが
git branch -a表示pending-issues-in-projectされます。
に対して同じことを試みた(削除しようとした)ときnew-issues-in-project、それはうまくいきました。
を使用して、ローカル サーバーから両方のブランチを既に削除しgit branch -D branchNameました。

ブランチがリポジトリに存在しないためにエラーが発生している場合、なぜリモートブランチリストに来るのでしょうか?
リモートブランチを強制的に削除する方法はあり
ますか?

御時間ありがとうございます。

4

2 に答える 2

20

あなたがしなければなりません:

git remote prune origin

ローカルの git リポジトリでそのリモート追跡ブランチを削除します (プルーンは、リモートオリジンに存在しなくなったブランチをすべて削除します)。その後、下に表示されなくなりますgit branch -a

于 2012-01-06T06:28:41.500 に答える
10

表示されているブランチは、リモート [追跡] ブランチと呼ばれるものです。これはローカルリポジトリにあり、リモート リポジトリでそのブランチを最後に見た場所を表します。Git はこのようなブランチを使用するため、リモート リポジトリを処理するたびにリモート リポジトリと対話する必要はありません。一度更新/フェッチするだけで、リモート ラッキング ブランチが更新され、そこから作業できます。あなたの場合、リモート リポジトリのブランチは削除されてから長い時間が経過しています。ローカル リポジトリのコピーを削除するだけです。

削除するには、主に次の 2 つの方法があります。

  • git branch -d -r origin/pending-issues-in-projectそのブランチだけを削除します。と
  • git remote prune originそのような古いリモート ブランチをすべて削除します。同時に更新することもできます。git remote update --prune origin
于 2012-01-06T14:05:20.523 に答える