黒い画面はPCの中だけを触っている、と思っていた
ローカルのフォルダでコマンドを打っただけなのに、なぜネット上のGitHubが更新されるのか分からなかった。gitの解説ではなく、その誤解がどういう形をしていたかの記録。
誤解の正体は、ローカルとネットの境目をどこに引いていたか
先に書いておくと、この記事にgitの正しい解説はない。今も完全には理解できていないので書けない。
書けるのは、自分が何をどう勘違いしていたか、である。そしてその勘違いは、たぶんgitそのものより手前にあった。
エクスプローラーと黒い画面はPCの中、ブラウザはネットの外。 自分は無意識にそこで線を引いていた。だから、黒い画面でコマンドを打っただけでネット上のGitHubが更新されたことが、どうしても飲み込めなかった。
出した質問
前の記事でGitの履歴を作り直してGitHubへpushし終わったあと、こう聞いている。
すごい初心者の話だけど、なんでこれローカルのファイルを開いていて、ブラウザで箱作っただけで、操作してないのにアップロードされたわけ? 今後このフォルダを編集するとgithubも同期するの?
バイブコーダーの敵である、あの黒い画面と戦い終わった直後の疑問である。
何がそんなに気持ち悪かったのか
やったことを自分の感覚で書くと、こうなる。
- エクスプローラーでフォルダを開いた
- そこでコマンドプロンプトを起動した
- ごちゃごちゃとコマンドを打った
- なぜかネット上のGitHubのリポジトリが更新されていた
先入観として、エクスプローラーを触っているときは自分のPCの中で作業していると思っている。そしてあの黒い画面も、基本的にはPCの中を操作しているイメージが強かった。
だから4が飛躍に見えた。PCの中しか触っていないのに、外にあるものが変わっている。ブラウザで何か操作した覚えもない。
「操作してないのにアップロードされた」と書いたのは、そういう感覚である。
同じ違和感は、pipでも起きる
これは今も続いていて、Pythonを触りはじめてpipでモジュールをインストールするときにも同じ引っかかりが邪魔をする。
pip install なんとか と打っただけで、なぜインストールされるんだ。 どこから持ってきたんだ。不思議でならない。
黒い画面=自分のPCの中、という思い込みが残っていると、コマンドが外と通信していること自体が毎回びっくりの対象になる。gitの話は、たぶんその一例でしかない。
実際に起きていたこと
聞いてみたら、そもそも前提から間違っていた。
結論から言うと、ブラウザで箱を作っただけではアップロードされていません。アップロードしたのは git push です。
順番に整理するとこうだった。
| やったこと | 実際の意味 |
|---|---|
| GitHubのブラウザ画面でリポジトリを作った | **空の箱を作っただけ。**この時点でファイルは1つも送られていない |
git remote add origin ... | アップロードではなく、送り先の住所を登録しただけ |
git push -u origin main | これが実際にアップロードした操作 |
途中でブラウザが開いて認証を求められたのも、勘違いの元だったらしい。あれは「アップロード操作の画面」ではなく、GitHubにログインして本人確認をするために開いただけだった。
つまり、ブラウザは最初と最後に顔を出すが、どちらもアップロードそのものではなかった。送ったのは黒い画面のほうである。
OneDriveの同期フォルダだと思っていた
質問の後半、「今後このフォルダを編集するとgithubも同期するの?」がどこから来たのかも、あとで思い当たった。
会社でいつも使っているOneDriveの同期フォルダのイメージである。
あれはローカルのフォルダにファイルを置くと、何もしなくても勝手にクラウド側と同期される。エクスプローラー上では普通のフォルダに見えるのに、裏で外と繋がっている。日常的にそれを使っているので、「PCの中のフォルダが、外のどこかと自動で揃う」という状態が身体に入っていた。
だからGitHubにファイルが並んでいるのを見た瞬間、同じ種類のものだと反射的に思った。
正確に書いておくと、頭のどこかでは push が要ることは分かっていた。分かっていたが、OneDriveのイメージが残っているせいで確信が持てず、一応聞いておこうという感じだった。理屈で知っていることと、身体で思っていることが食い違っている状態である。
自動では同期されない
もう半分の疑問、「今後このフォルダを編集するとGitHubも同期するの?」の答えは、しないだった。
ローカルのファイルを編集しても、GitHubは勝手には変わらない。反映するには毎回この流れが要る。
git status # 変更を確認する
git add . # 記録する対象を選ぶ
git commit -m "変更内容" # 版として記録する
git push # GitHubへ送る
逆も同じで、GitHub側でブラウザから編集した場合、ローカルPCは自動では変わらない。取り込むには git pull が要る。
たとえとして返ってきたのが、これだった。
- ローカルフォルダ = 作業中の原稿
git commit= 原稿の版を作る- GitHub = 鍵付きの保管庫
git push= 保管庫へ送る
原稿を書き換えただけでは、保管庫の中身は変わらない。OneDriveとは、ここが決定的に違う。 同じ「PCの中のフォルダ」に見えても、片方は勝手に運んでくれて、もう片方は自分で送らないと何も動かない。
なお、将来Cloudflare PagesとGitHubを接続したあとは、git push が「GitHubに保存」だけでなくサイト更新ボタンのような意味も持つらしい。今はまだ未接続なので、pushしても公開はされない。ここは公開後に体感で確かめることになる。
驚いて、すぐ逃げた
このとき自分が返した言葉が、これである。
cmdからアップロードのお願いとかできるんだ… 横道に逸れちゃたね、つぎは何だっけ
驚いて、なんとか理解しようとして、そして即座に「つぎは何だっけ」と逃げている。
実際にはこのあと、古の技であるGoogle検索を発動して少し調べ、分かった気になった。分かった気になった、というのが正確なところである。
まとめ:まだ勉強不足だが、やりながら覚える
gitの理解をしておかないと今後問題になるのは目に見えていた。それは分かっている。とはいえ今も完璧に理解できたかといえば、嘘になる。
ただ、この回で一つだけはっきりしたことがある。分からなかったのはgitの仕組みではなく、自分が普段どういうモデルで物を考えていたかのほうだった。
境目は見た目(エクスプローラーか、黒い画面か、ブラウザか)ではなく、外と通信するコマンドを打ったかどうかにある。そしてもう一つ、PCの中のフォルダが外と揃うのは当たり前ではない。OneDriveが勝手にやってくれているだけで、あれは特別なほうだった。
そう書くと当たり前に見えるが、当たり前に見えるようになったのはこの質問をしたあとである。
まだ勉強不足感はあるが、やりながら覚えていこうと思う。
※この記事では、GitHubのユーザー名とリポジトリの完全なURLを伏せている。