クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

Git のコミットと履歴の見方

このレッスンのあとで: 変更をコミットとして記録し、その履歴を読むことができる。

55分のレッスンコマンド13件Git と Gitea のラボ:自分専用の Git サーバーでクローン、コミット、プッシュを学ぶ

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 を見ましょう。

このラボとソースについて: Git と Gitea のラボ:自分専用の Git サーバーでクローン、コミット、プッシュを学ぶ

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。