重複の可能性:
現在のGitブランチをmasterブランチにする
Gitのリポジトリに2つのブランチがあります。
1.master 2.seotweaks
(元々は master
から作成されました)
私は seotweaks
を、すぐに master
にマージするつもりで作りました。しかし、それは3ヶ月前のことで、このブランチにあるコードは master
よりも13バージョンも進んでいます。
このブランチは事実上、私たちの作業用の master ブランチとなっています。なぜなら、master
にあるすべてのコードは、もうほとんど時代遅れになってしまったからです。
非常に悪い習慣ですが、教訓になりました。
どうすれば master
ブランチの内容を seotweaks
にあるものと入れ替えることができるのか、ご存知ですか?
master` にあるものをすべて削除してマージすることもできますが、これはベストプラクティスとは言えません。
このようにseotweaksでmasterを上書きするために、"ours"のマージ戦略を使用することができるはずです。
git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks
その結果、あなたのマスターは本質的に seotweaks になっているはずです。
(-s ours
は --strategy=ours
の略です)
docs]1 から 'ours' の戦略について。
これは任意の数のヘッドを解決しますが、マージの結果は常に現在のブランチのヘッドのツリーとなり、他のすべてのブランチからのすべての変更は事実上無視されます。これは、サイドブランチの古い開発履歴を上書きするために使用することを意図しています。これは再帰的マージ戦略の -Xours オプションとは異なることに注意してください。
コメントからの更新です。もし「無関係な歴史のマージを拒否する」という致命的なエラーが発生した場合は、2 行目を次のように変更します。git merge --allow-unrelated-histories -s ours master
git branch -m を使って master ブランチを別のブランチにリネームし、seotweaks ブランチを master にリネームするというのはどうでしょう? このような感じです。
git branch -m master old-master
git branch -m seotweaks master
git push -f origin master
**git push -f origin master` を実行する前に、オリジンマスターをチェックしてください。
リモートの master をリネーム/削除することはできますが、多くの人がリモートの master ブランチを元に作業を行い、そのブランチをローカルリポジトリにプルした場合、問題になるでしょう。
この場合、すべての人が 'seotweaks
' ブランチで作業しているように見えるので、そのようなことはないでしょう。
その場合、次のようにします。
git remote --show はうまくいかないかもしれません。
(git remote show
]1を作成して、ローカルリポジトリ内でどのようにリモートが宣言されているかを確認してみてください。ここでは 'origin
' とします)
(GitHubについては、house9のコメント: "一手間加えて、GitHubの 'Admin
' ボタンをクリックして 'Default Branch
' を 'master
' 以外にして、その後元に戻す必要がありました")
git branch -m master master-old # rename master on local
git push origin :master # delete master on remote
git push origin master-old # create master-old on remote
git checkout -b master seotweaks # create a new local master on top of seotweaks
git push origin master # create master on remote
しかし、またしても
reset --hard
する必要があり、現在のマスターのことは忘れてください。seotweaks
はもともと master
からのブランチとして作成されたため、マージして戻すことは良い考えです。 ただし、ブランチの1つが実際には「マスター」からのブランチではない状況や履歴が非常に異なるため、「マスター」ブランチを消去して、新しいブランチを支持したい場合は、39を参照してください。;veはあなたにこれを行うことができる仕事をしてきました:
git push [-f] origin seotweaks:master
これは、このエラーが発生している場合に特に役立ちます。
! [remote rejected] master (deletion of the current branch prohibited)
また、GitHubを使用しておらず、リモートリポジトリのデフォルトブランチを変更するための[管理]タブにアクセスできません。 さらに、マスターを削除しても、ダウンタイムやレースの状態が発生することはありません。
git push origin :master
これが最善の方法であることがわかりました(サーバーで削除できないという問題がありました)。
origin
リポジトリをホストするサーバーで、リポジトリ内のディレクトリから次のように入力します。
git config receive.denyDeleteCurrent ignore
あなたのワークステーションで:
git branch -m master vabandoned # Rename master on local
git branch -m newBranch master # Locally rename branch newBranch to master
git push origin :master # Delete the remote's master
git push origin master:refs/heads/master # Push the new master to the remote
git push origin abandoned:refs/heads/abandoned # Push the old master to the remote
origin
リポジトリをホストするサーバーに戻ります。
git config receive.denyDeleteCurrent true
ブログ投稿http://www.mslinn.com/blog/の作者へのクレジット?p = 772。