1

数週間前に Subversion リポジトリを Git に変換しました。不要になったブランチがたくさん残っていますが、削除できません。さらに悪いことに、svn などのブランチを取り除こうとしている最中に、"origin" が重複しているブランチを見つけました。これが私のブランチリストの一部です:

% git branch -a | egrep 'svn/partial|master'
* master
  origin/master
  origin/origin/master
  svn/partial
  remotes/origin/master
  remotes/origin/origin/master
  remotes/svn/partial

svn/partial ブランチは削除できるようですが、remotes/svn/partial ブランチは削除できません。

% git branch -D svn/partial
Deleted branch svn/partial (was 373a64c).
% git branch -D remotes/svn/partial
error: branch 'remotes/svn/partial' not found.

git-fetch すると、svn/partial が再作成され、"origin/" ブランチの別のレイヤーが取得されます。

% git push
Everything up-to-date
% git fetch
From .
...
 * [new branch]      origin/origin/origin/master -> origin/origin/origin/master
...
 * [new branch]      svn/partial -> svn/partial

うわぁ!彼らはトリブルのように増殖しています:

% git br -a | egrep 'svn/partial|master'
* master
  origin/master
  origin/origin/master
  origin/origin/origin/master
  svn/partial
  remotes/origin/master
  remotes/origin/origin/master
  remotes/origin/origin/origin/master
  remotes/svn/partial

これを修正するにはどうすればよいですか?

4

1 に答える 1

1

git branch -d <branch>ローカルブランチを削除します。リモートブランチはローカルリポジトリにないため、ローカルリポジトリから削除することはできません。

リモートリポジトリから削除するには、同等のコマンドがいくつかあります。標準的なコマンドは次のとおりです。

git push origin :svn/partial

これは、リモートブランチに何もプッシュしない(つまり、存在しないブランチ)ことをsvn/partial意味します。これにより、リモートブランチが存在しなくなります...これはGitの言い方です:)

Gitの最近のバージョンは、より使いやすい構文をサポートしています。

git push origin --delete svn/partial
于 2013-02-14T20:57:48.680 に答える