第2章 なぜスクリプトを Git で管理するのか

この章で学ぶこと

スクリプトを Git で管理すると、日々のちょっとしたストレスが目に見えて減っていきます。この章では、Git を学ぶモチベーションを 4 つの観点から整理します。

  • スクリプト管理で感じがちな「あるある」と、その背景にある 4 つの動機

  • 「Git なし」で困る場面と「Git あり」で解決する場面の比較

  • なぜスクリプトと Git の相性がよいのか

動機1: 履歴を残す

スクリプトをファイルとして直接管理していると、いつのまにかフォルダの中はこんな状態になっていないでしょうか。

  • backup_v1.py

  • backup_v2_final.py

  • backup_v2_final_REAL.py

_final」と付けたのに、その後にもう一度修正が入って「_final_REAL」が誕生する。よくある光景です。さらに数か月後には「これ、結局どれが本物だっけ?」となり、3 つのファイルを順番に開いて差を確認する羽目になります。

Git で管理していれば、ファイルは backup.py ひとつで構いません。変更のたびに「コミット」という単位で履歴が積み上がっていき、いつ・どこを・なぜ変更したのかをあとから自由に追いかけられます。ファイル名で世代管理する必要は、もうないのです。

動機2: 安心して実験する

「いま動いているスクリプトに、新しい処理を足してみたい。でも壊したらどうしよう…」という不安は、スクリプトを書いている人なら誰もが経験するはずです。結局、念のためフォルダごとコピーして、コピー側で実験して、うまくいったら手作業でマージして…という流れになりがちです。

Git があれば、「いまの状態」はすでに履歴として保存されているので、思い切って書き換えてしまって構いません。試してみてダメだったら、いつでもひとつ前のコミットの状態に戻せます。「壊しても戻せる」という安心感は、実験の頻度と速度を大きく変えてくれます。

動機3: バックアップになる

ローカルにしかないスクリプトは、PC が壊れたらそれまでです。USB メモリや外付けディスクにコピーしている方もいるかもしれませんが、コピーするのを忘れた日のぶんは戻ってきません。

スクリプトを Git で管理し、それを GitHub に push しておけば、リモート側にも同じ履歴が保存されます。もし PC が壊れても、新しい端末で gh repo clone するだけで、最後に push した時点の状態がまるごと復元できます。意識して「バックアップを取る」のではなく、ふだんの作業の流れの中で自然にバックアップが積み重なっていくイメージです。

動機4: 共有・公開できる

書いたスクリプトを同僚に渡す場面も少なくありません。ZIP に固めてメールで送る方法でもいちおう動きますが、相手が手元で少し手を加えたあと、こちらでも修正が入ると、すぐに「どっちが新しいんだっけ」問題が発生します。

GitHub にリポジトリを置いておけば、共有はリポジトリ URL を伝えるだけで済みます。さらに、社外にも役立ちそうな汎用ツールであれば、そのまま OSS として公開することも可能です。「自分の手元だけで動くスクリプト」から「他の人と共有できる資産」へと、一気に視野が広がります。

Git なし vs Git あり

ここまでの動機を、よくある場面ごとに「Git なし」「Git あり」で並べてみると、違いがはっきりします。

場面

Git なし

Git あり

「3日前のスクリプトに戻したい」

バックアップフォルダを漁る

git log で日時を見て git restore

「動かなくなった、どこを変えた?」

記憶頼り

git diff HEAD~1

「PC が壊れた」

全消失リスク

gh repo clone で復元

「同僚に渡したい」

ZIP で送る、版ズレ

リポジトリ URL を共有

表の右側に出てくるコマンドは、これから本書の中で順番に学んでいきます。いまは「こんなことがコマンド一発でできるのか」という雰囲気だけつかめれば十分です。

スクリプトと Git の相性

注釈

Git は テキストファイルの行単位差分を扱うのが得意です。Python やシェルスクリプトのようなスクリプトはまさにテキストファイルなので、Git の機能を最大限活かせます。一方で Excel や Word のような バイナリファイルは差分が見えにくいため、Git のメリットが半減します。

つまり、ふだん書いている .py.sh のスクリプトは、Git にとって「もっとも得意な相手」です。「Git は難しそう」というイメージを持っていても、スクリプトという題材から入れば、その恩恵をかなりストレートに受け取れます。

ハンズオン課題

手を動かす前に、自分の手元のスクリプトを思い出しながら、次のことを考えてみてください。

  1. 自分が過去に作ったスクリプトのファイル名 (*_v2*_final など) を 3 つ思い浮かべてください。Git で管理していたらどう簡略化できるか考えてみましょう

  2. 自分のスクリプトの中で「これが消えたら困る」と思うものを 3 つ挙げてみてください

ここで挙げたスクリプトは、本書を読み終えたあとに「最初に Git 管理に移行したいもの」の有力候補になります。

まとめ

この章では、スクリプトを Git で管理する 4 つの動機と、その背景を確認しました。

  • Git を使う動機は「履歴を残す」「安心して実験する」「バックアップになる」「共有・公開できる」の 4 つに集約できる

  • 「Git なし」で困っていた場面の多くが、「Git あり」ではコマンド一発で解決する

  • スクリプトはテキストファイルなので Git との相性がよく、学んだ内容をすぐに業務に活かせる

  • 次章からは、実際に Git と GitHub CLI を使うための環境設定に進みます