可能な重複:
現在のGitブランチをマスターブランチにする
Gitリポジトリには2つのブランチがあります。
master
(元々seotweaks
から作成された)私はmaster
を迅速にマージしてseotweaks
に戻すことを意図してmaster
を作成しました。しかし、それは3か月前であり、このブランチのコードはmaster
より13バージョン進んでいます。
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
の略です)
から '私たちの'戦略について:
これで任意の数のヘッドが解決されますが、結果として得られるマージのツリーは常に現在のブランチヘッドのツリーになり、他のすべてのブランチからのすべての変更が事実上無視されます。これは、サイドブランチの古い開発履歴に取って代わることを目的としています。これは再帰的マージ戦略の-Xoursオプションとは異なることに注意してください。
Git branch -mを使ってマスターブランチの名前を別のものに変更してから、seotweaksブランチの名前をマスターに変更しますか?このようなもの:
git branch -m master old-master
git branch -m seotweaks master
git Push -f Origin master
これはOrigin masterのコミットを削除するかもしれません 、git Push -f Origin master
を実行する前にOrigin masterをチェックしてください。
あなたはリモートでマスターの名前を変更/削除することができますが、多くの人々が彼らの仕事をリモートマスターブランチに基づいていて、彼らのローカルレポジトリでそのブランチを引っ張っている場合、これは問題になります。
誰もがブランチ 'seotweaks
'に取り組んでいるように見えるので、これはここでは当てはまりません。
その場合は、次のことができます。
git remote --showが機能しない場合があります。 (あなたのリモートがあなたのローカルリポジトリ内でどのように宣言されているかチェックするために git remote show
を作成してください。私は 'Origin
'と仮定します)
(GitHubについて、 house9 コメント: "もう1つのステップを実行し、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つが実際にはmaster
からのブランチではない場合や履歴が大きく異なるため、作業を行っている新しいブランチを優先してmaster
ブランチを削除したい場合は、これを行うことができます:
git Push [-f] Origin seotweaks:master
あなたがこのエラーを受けているならば、これは特に役に立ちます:
! [remote rejected] master (deletion of the current branch prohibited)
そしてあなたはGitHubを使っておらず、あなたのリモートリポジトリのデフォルトブランチを変更するために "Administration"タブにアクセスすることもできません。さらに、masterを削除することで遭遇する可能性があるので、ダウンタイムや競合状態を引き起こすことはありません。
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