プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

VSCode で git リポジトリにアップしようとするとエラーになる

こちらの記事に書いた内容を開発する際、 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 上にリポジトリを作ってからローカルでの作業を始めればよかったんですね。気をつけたいものですね。