【Github】There isn't anything to compare.と表示される問題について解決します。

Github

【Github】There isn't anything to compare.と表示される問題について解決します。

※本記事は広告が含まれる場合があります。

なやむくん
pushしてプルリクしたいけど何かおかしい…。
なやむさん
「There isn't anything to compare.」と表示されてうまくできない…。

などの疑問や悩みを解決してまいります。

There isn't anything to compare.とは

プルリクエストを作成しようとしたところ、以下のように「There isn't anything to compare.」と表示がされて上手くプルリクエストを作成することができない状態になることがあります。

比較するものが何も有りません
比較するものが無いです、ブランチは完全に異なるコミット履歴です

みつた
どういうことなのか、見ていきましょう。

原因

リモートリポジトリにすでに自動生成したファイルが存在しているにもかかわらず、クローンをせずにgit remote add originを実行してしまったことが原因です。

みつた
何かリポジトリ作成時に別のファイルを自動生成しませんでしたか…?
なやむくん
そういえばREADEMEファイルを作成しました。

リポジトリを作成する際にREADEMEファイルやgitignoreファイルを作成できる設定があります。

そこで自動生成したことを忘れてしまい、git remote add origin → git pushの手順で進めてしまったことが今回の原因です。

誤った手順

  • git initGitリポジトリを初期化を行う
  • git add .で管理したいファイルをステージングする
  • git commit -m "○○○○"ファーストコミットする
  • git remote add ○○○○ <https://github.com/yourusername/your-repository.git>リモートリポジトリと連携する。
  • git pushリモートリポジトリに反映する

こちらの手順の詳細については以下の記事を参考にしてください。

参考記事
【Git&GitHub】リポジトリ名を変更した後の対応について解説
【Git&GitHub】リポジトリ名を変更した後の対応について

続きを見る

本来リモートリポジトリにファイルが存在しないまっさらな状態であればこちらの手順で問題ないのですが、今回はすでにリモートリポジトリにファイルが存在している状態ですので手順が一部変更になります。

解決方法

一度作成してしまったローカルリポジトリとは別のディレクトリにリモートリポジトリをcloneしてからpushまでを実行し直します。

正しい手順

  • git initGitリポジトリを初期化を行う
  • git clone <https://github.com/yourusername/your-repository.git>でローカルリポジトリにクローンする
  • git add .でファイルをステージングする
  • git commit -m "○○○○"コミットする
  • git pushリモートリポジトリに反映する

上記の手順でpushまで進めたら、次に以下の手順で強制的にmainブランチとmasterブランチの内容を同じにします。

ブランチの内容を同一にする手順

  • git checkout masterで現在の作業ブランチをmasterに切り替える
  • git branch main master -fmasterブランチの状態を強制的にmainブランチに反映させる
  • git checkout mainで現在の作業ブランチをmainに切り替える
  • git push origin main -fでローカルのmainブランチをリモートリポジトリに強制的にプッシュする
なやむさん
あれ、mainブランチがいつの間にか作成されています…。
みつた
READEMEファイルの自動生成をdefaultのmainブランチで行われたからですね。

これにより、ローカルのmainブランチ(=masterと同じ状態)で行った変更が、リモートのmainブランチにも反映され、以前のリモートブランチの履歴は上書きされます。

デフォルトブランチの削除

READEMEファイルを自動生成時に作成されたmainブランチと、ローカルリポジトリの内容をリモートリポジトリに反映させるために作成されたmasterブランチの2つのブランチが存在している状態ですが、1つのブランチにするため以下の手順を実行します。

みつた
現在mainブランチがdefault blanchに設定されており、defaultに設定されているブランチは削除することができないので、Defaultの変更を行います。

メニューの「Settings」をクリックします。

SettingsページのDefault branchの「⇄」アイコンをクリックします。

「main▾」をクリックするとブランチを選択できるのでmasterを選択します。選択したら「Update」をクリックします。

クリックしたらダイアログが表示されるので、「I understand update the default branch.」をクリックします。

ここまでの手順でブランチのデフォルトがmainからmasterに変更されているはずですので、mainブランチは削除することができるようになっています。

次にリポジトリページに戻り、リポジトリ名の下のブランチ名をクリックします。

クリックするとプルダウンメニューが表示されるので、「View all branches」をクリックします。

現在のブランチが確認できるので、mainのごみ箱マークをクリックします。

ゴミ箱アイコンをクリックしたらページを更新してください。

更新したらBranchがmasterだけになったら削除が成功しています。

ここまでの手順で「There isn't anything to compare.」の対応と、ブランチを1つにすることができました。

参考記事

リモートリポジトリ新規作成時のThere isn't anything to compare.の解決方法 #Git - Qiita

デフォルトブランチを変更する - GitHub Docs

-Github