「最終版_本当に最終.xlsx」
自動車部品メーカーの事務所で、共有フォルダを開きました。「見積書最終.xlsx」「見積書最終2.xlsx」「見積書_本当に最終.xlsx」が並んでいます。
どれが正しいのか、誰が何を変えたのか、誰にもわかりません。
ソフトウェアの現場では、この問題を Git という道具で防いでいます。
このレッスンのゴール
メモ
作業をコミットとして保存し、その履歴を確認できる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| リポジトリ | ファイルと変更の履歴をまとめて保管する場所 | |
| コミット | ある時点の変更を、説明付きで記録したもの | |
| ステージング | 次のコミットに入れる変更を選ぶこと | git add |
| ログ | これまでのコミットの一覧 | git log |
| 差分 | 前と今の違い | git diff |
| ブランチ | 本線から分かれた作業の流れ |
学生が入力するセルは、このプレビューでは空白です。
コミットは変更の記録
Git では、フォルダをリポジトリにして使います。git init がその最初の一歩です。
ファイルを変えたら、git add で記録したい変更を選びます。これがステージングです。
次に git commit -m "説明" で記録します。説明には、何を変えたかを短く書きます。
コミットには、それぞれ 3f2a91c のような番号が付きます。
例: 最初のコミット
$ git init
Initialized empty Git repository in /home/tanaka/estimate/.git/
$ git add estimate.txt
$ git commit -m "見積書の初版を追加"
[main (root-commit) 3f2a91c] 見積書の初版を追加
1 file changed, 4 insertions(+)
$ git status
On branch main
nothing to commit, working tree clean
log と diff で履歴を読む
git log --oneline は、コミットを新しい順に一行ずつ表示します。一番上が最新です。
git diff は、まだコミットしていない変更を表示します。- で始まる行は消えた行、+ で始まる行は増えた行です。
これで、誰がいつ何を変えたかを後から追えます。
例: 見積書の履歴と差分
$ git log --oneline
8c1d4e7 (HEAD -> main) 部品Bの単価を修正
5b07a22 納期を11月15日に変更
3f2a91c 見積書の初版を追加
$ git diff
--- a/estimate.txt
+++ b/estimate.txt
@@ -2,3 +2,3 @@
部品A 100個 単価 450円
-部品B 50個 単価 1200円
+部品B 50個 単価 1150円
納期 11月15日
よくある誤解
注意
コミットすれば、チームのサーバーに自動で送られる、と思われがちです。コミットは自分のパソコンのリポジトリに記録するだけです。共有するには、別に git push を実行します。
ブランチは作業の分かれ道
main は、本番に使う本線のブランチです。
新しい作業は、main から分けたブランチで進めます。途中の作業が main を壊さないようにするためです。
作業が終わって確認がすんだら、ブランチを main に合流させます。これをマージと言います。
採用担当者が期待すること
ヒント
開発、運用、データのどの仕事でも、Git は毎日使います。入社初日から、変更をコミットし、説明をわかりやすく書けることが期待されます。