LoginSignup
6
3

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-07-01

はじめに

リモートリポジトリを新規作成して、
ローカルでgitの初期化(git init)して
gitのリモートリポジトリとの紐付け(git remote add)して
コミット・プッシュして
さあプルリクエストするぞ! といった矢先にエラー発生(涙)

there isn't compare.png

There isn't anything to compare.
Nothing to compare, branches are entirely different commit histories

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

リモートリポジトリ新規作成時の状態2パターン

  • リモートリポジトリが空でファイルが存在しない場合

  • リモートリポジトリに既に自動生成したファイルが存在している場合

リモートリポジトリ新規作成時の状態によって
その後の操作手順が異なります。

間違った操作手順(原因)

  • リモートリポジトリに既に自動生成したファイルが存在している場合

既にリモートリポジトリに自動生成したファイルが存在しているのに
クローンせずにリモートアッドして無理やりプッシュしたから。

1. git init
2. git remote add 
3. git add
4. git commit
5. git push

.gitignoreファイル・READEMEファイルを自動生成しているときは
最初にローカルリポジトリにクローンする必要があります。

正しい操作手順

  • リモートリポジトリに既に自動生成したファイルが存在している場合

リモートリポジトリをクローンしてからファイルを追加管理していく

1. git init
2. git clone
3. git add
4. git commit
5. git push
  • リモートリポジトリが空でファイルが存在しない場合

リモートアッドでリモートリポジトリを紐付けしてファイル管理を始める。
間違った操作手順(原因)と同様の手順で正常にできます。

解決方法

もしこのエラーが発生してしまったら...

  • 新しくローカルにクローンしてからコミット・プッシュをやり直す

希望するディレクトリで

1. git init
2. git clone
3. git add
4. git commit
5. git push

の順に操作していく。

  • ローカルの内容を強制的にリモートリポジトリに反映する

以下の手順で強制的にmainブランチをmasterブランチの内容と同一にして、
強制的にリモートリポジトリのmainブランチにプッシュすると解決します。

※リモートリポジトリのmainブランチの内容が消えてしまうので
 バックアップを取るようにしてください。

git checkout master
// 強制的にmainブランチをmasterブランチの内容と同一にする
git branch main master -f    
git checkout main
// 強制的にリモートリポジトリのmainブランチにプッシュする
git push origin main -f

参考

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3