8

これはサーバー上のリモート Git リポジトリです

[aaa@web48 proj.git]$ git ls-remote .
dfca707432eb53678b37026b160a4bdc7f1ac6c3    HEAD
dfca707432eb53678b37026b160a4bdc7f1ac6c3    refs/heads/master
1e09c37443ee758644a712e3c1a8b08b18a1f50d    refs/heads/placeholder

HEAD/master ブランチを削除したい。サーバー上またはリモートで行うにはどうすればよいですか? Tower クライアントを使用しています。

4

2 に答える 2

17

現在デフォルトの HEAD ブランチである場合、リモート ブランチを削除することはできません

リモートのベア リポジトリのHEADシンボリック参照は、そのリポジトリのデフォルト ブランチを表します。そのレポの裸でないクローンは、クローンの後にそのブランチを自動的にチェックアウトします。

これはデフォルトであるため、通常のように削除することはできません。Git では次のことはできません。

$ git push origin --delete master

remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error:
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error:
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To c:/Users/Keoki/Documents/GitHub/bare
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to 'c:/Users/Keoki/Documents/GitHub/bare'

上記のエラー メッセージは、安全チェックをバイパスHEADしてリモートの現在のブランチを削除できることを示していますが、デフォルト ブランチを変更して、デフォルト ブランチを保持できるようにする方法を説明します。しかしmaster、あなたが望むように削除してください。

コマンドラインからデフォルトの HEAD ブランチを変更する

リモートにアクセスできる場合は、リモート リポジトリのデフォルト ブランチを変更できます。GitHub や Bitbucket などのホスティング プロバイダーを使用している場合は、Web インターフェイスを介して既定のブランチを変更できるはずです。

したがって、リモートにアクセスできる場合は、次のコマンドを使用して、シンボリック参照がHEAD指すブランチを変更します。

git symbolic-ref HEAD refs/heads/<newDefaultBranch>

GitHub または Bitbucket でデフォルトの HEAD ブランチを変更する

前のセクションで既に述べたように、HEADGitHub や Bitbucket などのホスティング プロバイダーを使用している場合は、Web インターフェースを介してリモート リポジトリのデフォルト ブランチを更新できます。

GitHub

レポの [設定] タブに移動すると、デフォルトのブランチ設定が一番上に表示されます。

GitHub の設定

ビットバケット

レポの [設定] タブに移動すると、中央付近にデフォルトのブランチ設定が表示されます。

Bitbucket の設定

リモートのデフォルト ブランチへのローカル クローンの参照を更新します。

リモート ベア リポジトリのデフォルト ブランチを更新したら、そのリポジトリのローカル クローンがHEADリモートのデフォルト ブランチが指していると考える場所を更新する必要があります。あなたはそれを行うことができます

git remote set-head <remote> --auto

# Or shorter
git remote set-head <remote> -a

を使用して、ローカル リポジトリが適切に更新されたことを確認できます。

$ git branch -r
  origin/HEAD -> origin/foo
  origin/foo
  origin/master

これで、リモートのマスター ブランチを削除できます

リモートのデフォルトHEADブランチをマスター ブランチ以外に変更したので、リモートで削除できるようになります。

$ git push origin --delete master

To c:/Users/Keoki/Documents/GitHub/bare
 - [deleted]         master

# Older syntax
$ git push origin :master

その他の参考資料とドキュメント

于 2014-07-13T17:25:11.307 に答える