こちらの記事に書いた内容を開発する際、 WSL に接続して、 VSCode で開発をしていて、ローカルのリポジトリにせっせとコミットしてました。
で、あとから、 GitHub にリモートリポジトリを作成したので、
を選択して、リモートリポジトリを追加します。
と出てくるので、これを選ぶと、自分のリポジトリ一覧が表示されます。追加したいリポジトリを選択すると、
とあるので、 origin を入力してエンターを押すと、リモートが登録されます。
これでいいなと思い
を選択してプッシュしようとすると、
といわれるので、OKとすると、
と言われて怒られました。
なんで? 今までこんなこと起こったことなかったけどなー。と思ったのですが、よくよく見てみると、 Github 側でリポジトリを作成する際に、 README と ライセンスファイルを作っていました。
ということで、両者がぶつかってるということですね。
じゃあ、プルしましょうとして、プルすると、
といわれて、プルできません。
一応、コミットの状態を見ると、ローカルとリモートの両方のコミットは見えています。
じゃあ、ということで、リモートブランチを選択して、マージを選んでみます。
どのようにマージするか聞かれるので、一番上の merge を選びます。
すると、
のように表示されて、マージできないということのようです。
にしても、
fatal: refusing to merge unrelated histories
ってどういうことだ?
ここで、ネットを調べてみると、
[Git] マージしようとするとrefusing to merge unrelated historiesが出たときの対処方法 | DevelopersIO
VScodeでGitHubの連携する時にハマったこと - Qiita
おぉ、ぴったりの記事がありました。
こちらの記事を読めばわかるのですが、ローカルのリポジトリとリモートのリポジトリは、今から同期させたいと思ってますが、現時点ではまったく別個のもので、共通の親というものがありません。なので、 git 的には両者をマージしてよいかがわからないということのようです。
ということで、上記の記事を参考に、
mor@DESKTOP-DE7IL4F:~/tmp/gittest$ git merge --allow-unrelated-histories origin/main Merge made by the 'ort' strategy. LICENSE | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 3 +++ 2 files changed, 204 insertions(+) create mode 100644 LICENSE create mode 100644 README.md mor@DESKTOP-DE7IL4F:~/tmp/gittest$
としてやると、問題なくマージできました。
コミットはこんな感じです。あとはマージ後のコミットをプッシュしてやれば完了です。
素直に、 GitHub 上にリポジトリを作ってからローカルでの作業を始めればよかったんですね。気をつけたいものですね。