学ぶ / チートシート
テスターのための Git チートシート
開発者と一緒にテストフレームワークを開発するテスターに必要な Git コマンドです。ブランチを切り、コミットし、main に追従し、作業を失わずにミスを取り消し、バグを持ち込んだコミットを特定します。作業内容が失われるコマンドには注記を付けています。
Git 2.40 以降 で確認済み
初期設定
| やりたいこと | コード |
|---|---|
| ユーザー情報 | git config --global user.name "Mei Lin" git config --global user.email "mei@example.com" |
| デフォルトのブランチ名 | git config --global init.defaultBranch main |
| リポジトリをクローン | git clone https://github.com/org/tests.git |
| pull をデフォルトで rebase にする | git config --global pull.rebase true |
日々の作業
| やりたいこと | コード |
|---|---|
| 何が変わったか | git status |
| 現在地から新しいブランチを作成 | git switch -c fix/login-flaky-wait |
| ファイルをステージ | git add tests/login.spec.ts |
| ファイルの一部をステージ | git add -p |
| コミット | git commit -m "Wait for login response instead of sleep" |
| 新しいブランチをプッシュ | git push -u origin fix/login-flaky-wait |
| 最新の変更を取得 | git pull |
| ブランチを切り替える | git switch main |
状況を確認する
| やりたいこと | コード |
|---|---|
| 履歴をコンパクトに表示 | git log --oneline --graph --decorate -20 |
| 1 ファイルの履歴 | git log --follow -p -- tests/login.spec.ts |
| ステージしていない変更 | git diff |
| ステージ済みの変更 | git diff --staged |
| 自分のブランチと main の差分 | git diff main...HEAD |
| 1 つのコミット | git show 3f2a9c1 |
| これらの行を誰が変更したか | git blame -L 20,40 tests/login.spec.ts |
| すべてのブランチ | git branch -a |
main に追従する
| やりたいこと | コード |
|---|---|
| ファイルを変更せずにダウンロード | git fetch origin |
| 自分のコミットを main の上に積み直す | git rebase origin/main |
| または main を自分のブランチにマージ | git merge origin/main |
| コンフリクトを解消した後 | git add <file> then git rebase --continue |
| rebase を中止する | git rebase --abort |
| rebase したブランチを安全にプッシュ | git push --force-with-lease |
| 1 つのコミットをこのブランチにコピー | git cherry-pick 3f2a9c1 |
rebase するのは自分のブランチだけにしましょう。--force-with-lease は、他の人がプッシュしたコミットの上書きを拒否します。
取り消す
| 状況 | コマンド |
|---|---|
| ファイルの編集を破棄(失われます) | git restore tests/login.spec.ts |
| ファイルのステージを解除し、編集は残す | git restore --staged tests/login.spec.ts |
| 直前のコミットメッセージを直す、またはファイルを追加 | git commit --amend |
| 直前のコミットを取り消し、変更はステージしたまま | git reset --soft HEAD~1 |
| プッシュ済みのコミットを取り消す(新しいコミットを追加) | git revert 3f2a9c1 |
| ローカルの変更をすべて捨てる(失われます) | git reset --hard HEAD |
| 「失った」コミットを探す | git reflog |
共有ブランチでは revert を使います。reset と amend は履歴を書き換えるため、他の全員が自分のコピーを修正する羽目になります。
作業を一時退避する
| やりたいこと | コード |
|---|---|
| 変更を stash する | git stash push -m "half-done locator refactor" |
| 追跡されていないファイルも含める | git stash push -u |
| stash の一覧 | git stash list |
| 最新の stash を再適用して削除 | git stash pop |
壊したコミットを見つける
| やりたいこと | コード |
|---|---|
| 開始 | git bisect start |
| 現在のコミットを bad にする | git bisect bad |
| 正常だと分かっているコミットを good にする | git bisect good v2.3.0 |
| 各ステップの判定をテストに任せる | git bisect run npx playwright test tests/checkout.spec.ts |
| 終了して元に戻る | git bisect reset |
bisect run は終了コード 0 を good、1〜127 を bad として扱います(125 はこのコミットをスキップする意味)。