ローカルとリモートの両方の Git リポジトリのマスター ブランチの名前を変更する 質問する

ローカルとリモートの両方の Git リポジトリのマスター ブランチの名前を変更する 質問する

masterリモートブランチを追跡するブランチがありますorigin/master

master-oldローカルとリモートの両方で名前を変更したいのですが、これは可能ですか?

追跡していた他のユーザーorigin/master(および常にmaster経由でローカル ブランチを更新していたユーザーgit pull)の場合、リモート ブランチの名前を変更した後はどうなりますか?引き続き機能
しますgit pullか、それとももう見つからないというエラーがスローされますかorigin/master?

その後、さらに新しいブランチ (ローカルとリモートの両方) を作成したいと思いますmaster。繰り返しますが、これを実行した後、他のユーザーがこれを行うとどうなるでしょうかgit pull?

これらすべてが大きな問題を引き起こすと思います。私が望むものを得るためのクリーンな方法はあるでしょうか? それとも、masterそのままにして新しいブランチを作成しmaster-new、そこでさらに作業を進めたほうがよいでしょうか?

ベストアンサー1

名前の変更に最も近いのは、リモートで削除してから再作成することです。例:

git branch -m master master-old
git push remote :master         # Delete master
git push remote master-old      # Create master-old on remote

git checkout -b master some-ref # Create a new local master
git push remote master          # Create master on remote

ただし、これには多くの注意点があります。まず、既存のチェックアウトは名前の変更を認識しません。Git はブランチの名前の変更を追跡しようとしません。新しいブランチmasterがまだ存在しない場合、git pull はエラーになります。新しいブランチが作成されている場合、pull はマージとmasterを試みます。したがって、以前にリポジトリをチェックアウトしたすべての人の協力がない限り、これは一般的に悪い考えです。mastermaster-old

注: Git の新しいバージョンでは、デフォルトではマスター ブランチをリモートで削除できません。リモートリポジトリでreceive.denyDeleteCurrent設定値を または にwarn設定することで、これを上書きできます。それ以外の場合、すぐに新しいマスターを作成する準備ができている場合は、この手順をスキップして、の手順に進みます。リモートの設定を変更できない場合は、マスター ブランチを完全に削除できないことに注意してください。ignoregit push remote :master--forcegit push remote master

この警告は現在のブランチ (通常はブランチmaster) にのみ適用されます。他のブランチは上記のように削除して再作成できます。

おすすめ記事