Git とは何か、なぜ使うのか
Git は、ファイルの変更を履歴として残す、バージョン管理のしくみです。いつ、だれが、何を変えたかを、あとから正確に調べられます。
レポートのファイルを毎晩コピーして、日付を付ける人がいます。ある日、どれが最新か分からなくなります。Git なら、1つのフォルダのまま、過去のどの版にも戻れます。
このレッスンのゴール
メモ
変更をコミットとして記録し、その履歴を読むことができる。
大事な言葉
| ことば | いみ | れい |
|---|---|---|
| リポジトリ | ファイルと、その履歴をまとめて入れた入れ物(repository) | |
| コミット | ある時点の変更を、メッセージ付きで記録したもの(commit) | git commit -m "価格表を作る" |
| 作業ツリー | 今、編集しているファイルのあるフォルダ(working tree) | |
| ステージ | 次のコミットに入れる変更を、置いておく場所(staging area) | git add prices.txt |
| 履歴 | コミットを新しい順に並べたもの(log) | git log |
学生が入力するセルは、このプレビューでは空白です。
コミットには作った人が残る
コミットには、作った人の名前とメールアドレスが記録されます。そこで最初に、Git に自分の名前を教えます。
--global を付けると、このマシンのすべてのリポジトリで使われます。ここでは練習用の名前で構いません。
名前を教える
git config --global user.name "Student"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
メールアドレスを教える
git config --global user.email "[email protected]"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
git init で履歴を始める
git init は、フォルダをリポジトリにします。中に .git という隠しフォルダができて、履歴はそこに入ります。
-b main は、最初のブランチの名前を main にします。shop は新しいフォルダの名前です。出力の最後の道のりは、マシンごとに違います。
リポジトリを作る
git init -b main shopここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ファイルを作ると、Git は未追跡と言う
練習用に、果物の値段表を作ります。printf は文字を書き出すコマンドで、\n は改行です。
次の git -C shop は、shop フォルダの中で git を動かす、という意味です。status --short は、状態を1行ずつ短く出します。
値段表を作る
printf "apple 120\nmikan 80\n" > shop/prices.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
状態を見る
git -C shop status --shortここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
?? は、まだ Git が知らないファイル
?? は、Git がまだ追跡していないファイルです。ファイルがあっても、コミットに入れると決めるまで、Git は何もしません。
ファイルが通る3つの場所
| 場所 | 中にあるもの | 次へ進めるコマンド |
|---|---|---|
| 作業ツリー | 今、編集しているファイル | git add |
| ステージ | 次のコミットに入れる変更 | git commit |
| リポジトリ | 記録の済んだコミット | git log で読む |
学生が入力するセルは、このプレビューでは空白です。
ステージに置く
git -C shop add prices.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
もう一度、状態を見る
git -C shop status --shortここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
git commit は、ステージの内容を記録する
A は、追加された(added)という意味で、ステージにあります。ここで git commit -m を使うと、メッセージ付きの最初のコミットができます。
出力の最初の行に、ブランチ名と、コミットの短い名前と、メッセージが出ます。短い名前は、マシンごとに違います。
最初のコミット
git -C shop commit -m "価格表を作る"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2つ目のコミットで履歴が伸びる
値段表に1行足します。git diff --stat は、どのファイルが何行変わったかを、要約して見せます。
commit -am の -a は、追跡中のファイルの変更を、まとめてステージに置きます。新しいファイルには効きません。
1行足す
printf "banana 150\n" >> shop/prices.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
変更の大きさを見る
git -C shop diff --statここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2つ目のコミット
git -C shop commit -am "バナナを足す"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
git log は履歴を新しい順に読む
git log は、コミットを新しい順に出します。ふつうは、長い名前、作者、日時、メッセージが並びます。
--format="%s" は、メッセージだけを1行ずつ出します。--no-pager は、長い出力でも止まらずに、そのまま表示します。
メッセージだけを読む
git -C shop --no-pager log --format="%s"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
作者とメッセージを読む
git -C shop --no-pager log --format="%an|%s"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
「ファイルを作って commit すれば、入る」と考える人が多くいます。実際は、add していない新しいファイルは、-a を付けても入りません。commit のあとで、必ず status を見ましょう。