1. ホーム
  2. git

[解決済み] ローカルとリモートの Git リポジトリの master ブランチの名前を変更する

2022-03-23 21:12:23

質問

私は、ブランチ master リモートブランチを追跡する origin/master .

にリネームしたい。 master-old ローカルとリモートの両方で これは可能ですか?

を追跡している他のユーザーのために origin/master (そして、常にローカルの master ブランチは git pull )、リモートブランチの名前を変更したらどうなるのでしょうか?
その git pull が見つからないというエラーを投げるのでしょうか? origin/master はもうないのでしょうか?

そして、さらに、新しい master ブランチ (ローカルとリモートの両方) を作成します。もう一度言いますが、私がこれを行った後、他のユーザが git pull ?

これだけだと、結果的に大変なことになりそうですね。何かいい方法はないでしょうか?それとも master をそのままにして、新しいブランチを作成します。 master-new ということで、今後はそちらで作業してください。

どのように解決するのですか?

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

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

しかし、これには多くの注意点があります。まず、既存のチェックアウトには名前の変更が伝わらないということです。 ではなく は、ブランチのリネームを追跡しようとします。もし新しい master はまだ存在しない。 git pull はエラーになります。もし、新しい master が作成されている場合、pull は mastermaster-old . ですから、以前にそのリポジトリをチェックアウトした人たち全員の協力が得られない限り、一般的には悪い考えです。

注意: Git の新しいバージョンでは、デフォルトで master ブランチをリモートで削除することができません。これを上書きするには receive.denyDeleteCurrent の設定値を warn または ignore を使用します。 リモート レポジトリを使用します。そうでない場合、すぐにでも新しいマスターを作りたいのであれば git push remote :master ステップを実行し --forcegit push remote master のステップに進みます。リモートの設定を変更できない場合は、master ブランチを完全に削除することができないことに注意しましょう!

この注意点は、現在のブランチ (通常は master 他のブランチは、上記のように削除して再作成することができます。