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