Gitの「マスター」ブランチの名前を「リリース」に変更するにはどうすればよいですか?


115

ブランチの使用方法がより明確になるように、masterブランチをリリースブランチと呼ぶプロジェクトに新しいポリシーを適用したいと思います。もちろん、候補ブランチも開発してリリースします。

以下を使用するだけで、masterブランチの名前をローカルで変更できることを理解しています。

git branch -m master release

ただし、それはローカルでのみです。これをリモートにプッシュしたとしても、HEADはまだリモートマスターブランチを指しています。マスターブランチを完全に削除し、最初のクローン時にデフォルトのローカルブランチをリリースしたい。

どうすればこれを達成できますか?

オリジンがGitoriousサーバー上にあるため、マスターブランチの削除中にエラーが発生するようです。これを変更して、デフォルトのブランチが「リリース」になるようにできるかどうかを確認しようとしています。


2
ふふふふ。長期的な価値は、少なくとも試すには十分です。
カイル・ヘイズ


一部の(リモート)サーバーは、「デフォルト」ブランチの削除を拒否します(Githubの場合)。そのため、サーバー上で操作時に別の「デフォルト」ブランチを選択する必要があるかもしれません... Githubでは、これは「ブランチ」ビューで実行できます。
jehon

回答:


139
git checkout -b release master    # Create and switch to the release branch
git push -u origin release        # Push the release branch to the remote and track it
git branch -d master              # Delete local master
git push --delete origin master   # Delete remote master
git remote prune origin           # Delete the remote tracking branch

GitHubを使用している場合は、手順3の後で、まずGitHubの「デフォルト」ブランチを変更する必要があることに注意してください。

github.com上のリポジトリに行く設定支店をデフォルトの支店リリースに変更してから、残りの手順を実行します。


3
私はgitのプッシュ--deleteをしようとすると、私は次のエラーを取得する:現在のブランチの削除は禁止
カイル・ヘイズ

8
あなたはgithubのか、似たものを使用して、デフォルトのブランチに何か他のものにする必要がある:matthew-brett.github.com/pydagogue/gh_delete_master.htmlがあったり、単に休暇のマスターをし、それを無視します。
Adam Dymitruk、2012年

ええ、私たちは怪しげな例を持っています。それがオプションかどうかを見てみましょう。
カイル・ヘイズ

/:私が見ることができることを正当な理由なく- gitorious'コミットフックがマスターブランチの削除禁じるように見えます
FGE

1
同じ! [remote rejected] branch (deletion of the current branch prohibited) ことがBitbucketでも起こります。設定画面(歯車アイコンの下)で[メインリポジトリ]を切り替えます
dnfehren

13

あなたのマスターブランチをチェックしてください

git checkout master

リリースブランチを作成し、それに切り替えます。

git branch release
git checkout release

それをサーバーにプッシュする

git push origin release

サーバー上のマスターブランチ参照を削除する

git push origin :master

ローカルマスターブランチを削除する

git branch -d master

2
これらの手順で、上記と同じエラーが発生することがわかります。
カイル・ヘイズ

@KyleHayesこれはサーバーの構成の問題です。デフォルトではこのようになっていますが、変更プロセスはユーザーには明らかであるか、Stackoverflowで簡単に見つけ
Jeff Ferland

ブランチを削除する前に、別のブランチに切り替える必要があります。
martinedwards

5

注:この回答は、コマンドラインアクセスが可能な自己ホスト型Gitサーバーを対象としています。

remote master実際にクライアントからを削除することは許可されておらずdenyDeleteCurrent、禁止することは理にかなっていると思いますので、その設定を変更したくありません。

ただし、リモートサーバーにコマンドラインでアクセスできるマスターIFFの名前を変更する最も簡単な方法、リモートで直接renameコマンドを実行することです。

これは私のために働きました:

  1. SSH経由でリモートgitサーバーにログイン
  2. プロジェクトのxxx.gitフォルダーに移動します
  3. 実行: git branch -m master release

これで、リモートリポジトリはreleaseデフォルトのブランチとして使用され、git clone任意のクライアントからのそのリポジトリ上のすべてがデフォルトでリリースブランチをチェックアウトします。

必要に応じて構成するために、ベアリポジトリをセットアップした後も非常に役立ちます。


3

他の人が以前に述べたように、ここでの問題はGitoriousであり、デフォルトではHEADブランチを削除できません。この問題を回避するには、2つのオプションがあります。1つは、Gitoriousサーバーに(sshを使用して)ログインし、ファイルサーバーでGitリポジトリーを見つけて、以下を追加することです。

[receive]
        denyDeleteCurrent = warn

構成に。

より簡単なオプションは、デフォルトのブランチを変更することです。Gitorious Webインターフェイスでリポジトリに移動し、「リポジトリの編集」を押して、「GitリポジトリのHEADがHEADを指すようにヘッドを変更:」に設定します。これが完了したら、masterブランチを削除できます。


2

GitHubでこの問題が発生した場合は、リモートでブランチを削除するまで手順を実行してください。それはあなたにそれをさせません。そして、Webインターフェイスに、リポジトリ外出先でログオン設定ブランチデフォルトの支店。それを新しいブランチに変更し、残りの手順を実行します。


1

理想的には、トラッキングを設定したいので、これを行います:

git push origin HEAD:release
git checkout --track origin/release

今、他を削除しますか?

git branch -d master
git push origin :master

シンプル!


git push origin:masterコマンドに到達したときに、@ Adamのコメントに投稿したのと同じエラーが発生しました。
カイル・ヘイズ

0

ブランチの名前の変更が完了したので、HEADをreleaseリモート用に設定するには

git remote set-head origin release

次にmaster、リモートでブランチを削除するには、少なくともGitHubで管理者である必要があります。詳細については、この投稿を参照しください。

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