Post

複数のPCでGitHubを使ったデータ同期の方法

複数のPCでGitHubを使ったデータ同期の方法

複数のPCで同じプロジェクトの作業をするとき、ファイルの管理に困っていませんか?USBメモリでの持ち運びは面倒だし、OneDriveのようなファイル同期サービスでは、意図せずファイルが競合してめんどくさいことになることもあります。

そんな悩みは、GitGitHubが解決してくれます!GitHubを「クラウド上のマスターデータ」として活用し、どのPCからでも安全かつ確実に作業の続きを行える方法をご紹介します。


なぜGitHub? 基本的な考え方

複数のPCで作業する際、GitHubを すべてのデータの親玉(マスターデータ) として中心に置きます。各PCは、その親玉からデータをダウンロード(pull)したり、作業内容をアップロード(push)したりして、常に最新の状態を保ちます。

この方法なら、ファイル同期サービスで起こりがちな「どちらの変更が正しいのか分からない」といった混乱を防ぐことができます。


複数のPCでの基本操作

使うコマンドは、主にgit push(送る)とgit pull(取る)の2つだけです。

1. 自宅のデスクトップPCで作業

まず、自宅のPCで記事の執筆やコードの編集を行います。作業が一区切りついたら、その変更内容をGitHubにアップロードしましょう。

1
2
3
4
5
6
7
8
# 変更されたファイルをすべて記録の対象にする
git add .

# 「どんな作業をしたか」メッセージを付けて記録する
git commit -m "自宅PCでの作業内容"

# GitHubに変更内容をアップロードする
git push

これで、あなたの最新の作業データがGitHubに安全に保管されました。

2. 外出先のノートPCで作業

次に、外出先でノートPCを開き、作業を始めます。ここが重要です! まず、自宅のPCでアップロードした最新のデータを、このノートPCにダウンロードします

1
2
# GitHubから最新のデータをダウンロードして同期する
git pull

このコマンド一つで、ノートPCのプロジェクトは、先ほどまで作業していたデスクトップPCと全く同じ状態になりました。これで安心して作業を再開できます。

作業が終わったら、デスクトップPCの時と全く同じように、変更をGitHubにアップロードします。

1
2
3
git add .
git commit -m "ノートPCでの作業内容"
git push

3. 再び自宅のPCで作業 🖥️

自宅に戻ってきました。作業を始める前に、ノートPCで行った変更内容をgit pullでデスクトップPCに反映させることを忘れないでください。

1
git pull

これで、また最新の状態から作業を始められます。

黄金のルール:これだけは守ろう!

複数のPCで作業するときの、たった一つのシンプルなルールはこれです。

作業を始める前には git pull、作業を終えたら git push

この「pull → 作業 → push」のサイクルを習慣にすれば、どのPCでも常に最新の状態から、安全かつ確実に作業を再開できます。

💡 トラブルシューティング:もしgit pullを忘れたら?

「しまった! 作業前にgit pullするのを忘れて、そのまま作業しちゃった…」

大丈夫、慌てないでください。Gitは賢いので、データが簡単に消えることはありません。この状態でgit pushしようとすると、Gitが安全のために処理を止めてくれます。

何が起きるか pullを忘れてpushしようとすると、ターミナルにこんなエラーが表示されます。

1
2
3
4
5
6
! [rejected]        main -> main (fetch first)
error: failed to push some refs to '[https://github.com/](https://github.com/)...'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.

これはエラーですが、パニックになる必要はありません。Gitからの「おっと、君が知らない間にGitHubの方が新しくなってるよ!このまま上書きすると、その変更が消えちゃうから、一旦git pullして最新版を取り込んでね」という親切なメッセージです。

なぜ起きるのか

  1. PC-Aで作業し、pushする。(GitHubのバージョンがv2になる)
  2. PC-Bで作業を始める。この時pullを忘れたので、PC-Bのバージョンは古いまま(v1)。
  3. PC-Bで編集し、commitする。(PC-Bのローカルバージョンがv3になる)
  4. PC-Bからpushしようとする。しかし、GitHubはv2になっており、PC-Bの元になったv1と歴史が食い違っています。そのため、Gitが「歴史が違う!」と判断してpushを拒否(reject)するのです。

どうすれば解決できるか

エラーメッセージの指示通り、git pullを実行します。

1
git pull

git pullを実行すると、GitはGitHub上の変更(他のPCでの作業内容)と、あなたのPC上の変更を自動で合体(マージ)しようとします。

  • 自動でマージ成功: 違うファイルの違う場所を編集していた場合など、問題なく自動で合体が完了します。その後、もう一度git pushすれば成功します。

  • コンフリクト(競合)発生: もし、両方のPCで同じファイルの同じ行を編集していた場合、Gitは「どっちの変更を優先すればいいか分からない!」となり、 コンフリクト(競合) が発生します。その場合は、VSCodeなどのエディタで競合したファイルを開き、どちらの変更を残すか(あるいは両方残すか)を手動で修正してから、改めてaddcommitpushを行えば解決できます。

まとめ

git pullを忘れても、データが即座に消えることはありません。エラーが出たら、それはGitがあなたのデータを守ってくれている証拠です。落ち着いてgit pullを実行する、と覚えておけば大丈夫です。

「作業前はpull、作業後はpush」

この黄金ルールを身につけて、快適なGitHubライフを送りましょう!

This post is licensed under CC BY 4.0 by the author.