コミットしてはいけないファイル
プロジェクトのフォルダには、コード以外のものも入っています。ログ、プログラムが作る控え、ときにはパスワードもあります。一度コミットしたパスワードは、clone した人ならだれでも読めます。
.gitignore というファイルで、Git に放っておくファイルを教えます。このレッスンでは、1つ書いて、1つの失敗を直します。
このレッスンのゴール
メモ
.gitignore で、ファイルを Git の外に置くことができる。
大事な言葉
| ことば | いみ | れい |
|---|---|---|
| 無視する | ファイルをわざと Git の外に置くこと(ignore) | |
| パターン | 無視するファイルを指す1行 | *.log |
| 追跡済み | すでにコミットに入っていて、Git が見張っている状態 | |
| 未追跡 | まだどのコミットにも入っていない状態 | |
| 秘密 | パスワードのように、人に見せてはいけない文字列 |
学生が入力するセルは、このプレビューでは空白です。
パターンが無視するファイルを指す
プロジェクトに .gitignore というファイルを置きます。1行が1つのパターンです。合うファイルは Git が放っておくので、未追跡のままで、新しいファイルとしても出なくなります。
先頭の点も名前の一部です。.gitignore 自体もコミットすると、clone した全員が同じ規則を使えます。
例で見る: 4種類のパターン
| パターン | 無視するもの | 合う例 |
|---|---|---|
| `key.txt` | 名前がぴったり同じファイル | key.txt |
| `*.log` | .log で終わるすべてのファイル | till.log |
| `build/` | フォルダまるごと | build/out.txt |
| `!keep.log` | 例外: このファイルは無視しない | keep.log |
学生が入力するセルは、このプレビューでは空白です。
kiosk というリポジトリを作る
git init -b main kioskここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2つの価格のファイルを作る
printf 'コーヒー 300\nお茶 200\n' > kiosk/prices.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
作り物のパスワードのファイルを作る
printf 'password=abc123\n' > kiosk/key.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ログのファイルを作る
printf 'レジを開けた\n' > kiosk/till.logここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
価格と鍵を、うっかりステージする
git -C kiosk add prices.txt key.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
コミットする
git -C kiosk commit -m "価格と鍵を追加"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
無視の一覧を書く
printf '*.log\nkey.txt\n' > kiosk/.gitignoreここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
Git が無視するものを見る
git -C kiosk status --short --ignoredここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
どのパターンに合ったか聞く
git -C kiosk check-ignore -v till.logここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
無視してもコミットは消えない
Git が無視するのは、まだ追跡していないファイルだけです。key.txt はすでにコミットに入っていて追跡済みなので、新しいパターンは効きません。
追跡をやめるには git rm --cached を使います。--cached は、Git から外し、フォルダには残します。付けないと、ディスクからも消えます。
ファイルのパスワードを書き換える
printf 'password=xyz789\n' > kiosk/key.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
今の Git の言い分を見る
git -C kiosk status --shortここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
鍵の追跡をやめて、ファイルは残す
git -C kiosk rm --cached key.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
無視の一覧をステージする
git -C kiosk add .gitignoreここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2つの変更をコミットする
git -C kiosk commit -m "ログを無視し、key.txt の追跡をやめる"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
鍵を含むコミットをすべて探す
git -C kiosk --no-pager log --format=%s -- key.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
ファイルを無視したり Git から外したりすれば、永久に隠れると思いがちです。隠れません。最初のコミットに古いパスワードが残り、履歴を持つ人は読めます。コミットした秘密は漏れたものと考え、パスワードを変えます。