Git
GitHub

GitHubのmasterブランチを削除して、masterを置き換えた (^o^;)

GitHub においてある master ブランチを削除して、別のブランチを master として置き換えました :cold_sweat:


コミットログを修正する

ローカルのmasterブランチ最新にします。


masterを最新にする

git pull origin master


GitHub で fork しておくなり、ローカルに master のバックアップをとっておきます。

最新のコミットを消したい場合なので git reset でコミットを巻き戻します。

git reset --hard HEAD^


masterブランチを削除する

GitHubのmasterを削除します。

git push origin :master

しかし、エラーが発生しました。

git push origin :master

remote: error: refusing to delete the current branch: refs/heads/master
To git@github.com:pugiemonn/pugiemonn.com.git
! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to 'git@github.com:pugiemonn/pugiemonn.com.git'

上記のようにエラーが生じます。これは、GitHub で default のブランチが master になっていると削除できないようです。

default のブランチは GitHub の画面から変更することができます。「Settings」から Default branch 項目を変更します。

github-defualt-branch.png

上記のようなセレクトメニューをmaster以外にします。

masterブランチを削除します。

git push origin :master

To git@github.com:pugiemonn/pugiemonn.com.git
- [deleted] master

GitHub にアクセスすると master ブランチが削除されています。

ちなみに

コマンドを使用しない場合、ブランチは以下のように GitHub の画面からも削除できます。

delete-master-branch.png


新しい master ブランチを push する

ローカルの masterをGitHub へ push します。

git push origin master

Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:pugiemonn/pugiemonn.com.git
* [new branch] master -> master

再び、GitHub の「Settings」から Default branch 項目を master に変更します。

select-master-branch.png


masterブランチを消すとプルリクエストがクローズされる

masterブランチを削除すると、masterに対してリクエストされていたプルリクエストがすべてクローズされています。

最初プルリクエストが全部消えた?!と勘違いしました :sweat_smile:

閉じられたブランチを確認する場合は、GitHub の「Pull requests」から Closed 項目を選択します。

closed-branch.png

上図は#23が閉じられたプルリクエストです。

複数のブランチが閉じられて、GitHub の画面からすぐ見つからない場合は、Recently updatedでソートすると最近クローズされたブランチがすぐ見つかります。

Recently-updated-branches.png

閉じられたプルリクエストをオープンにするには、クローズされたブランチを選択した上で、Mark as から Open を選択します。

open-closed-branches.png

master削除前にオープンされていたプルリクエストを、再びオープンにすることができます。


感想

GitHub の master ブランチを削除しました :scream:

プルリクエストが全部クローズされたのには最初驚きました。ブランチが消えるので当然かもですね。

master を削除するのは本来好ましくなく、プルリクエストベースの開発などにして master を削除しないで済むような運用をするのが望ましいそうです。