| セットアップと設定 |
|---|
| 名前、メール、エディターを全リポジトリに対して一度だけ設定する。 | git config --global user.name "Ada" |
| よく使うコマンドにショートカット名を定義する。 | git config --global alias.co checkout |
| 現在のフォルダーに新しいリポジトリを作成する。 | git init |
| リモートリポジトリを自分のマシンにコピーする。 | git clone git@github.com:org/repo.git |
| 単一ブランチの最新コミットだけをコピーする。 | git clone --depth 1 --single-branch git@github.com:org/repo.git |
| スナップショットの基本 |
|---|
| ステージ済み・変更済み・未追跡の状態を表示する。 | git status -sb |
| 変更をステージして、次のコミットに入るようにする。 | git add src/app.ts |
| 変更をハンクごとに確認し、承認したものだけステージする。 | git add -p src/app.ts |
| 新規ファイルを追加せず、追跡済みファイルの変更をすべてステージする。 | git add -u |
| ステージした変更を新しいコミットとして記録する。 | git commit -m "fix: null check" |
| 最後のコミットを修正済みのものに置き換える。 | git commit --amend -m "fix: handle empty input" |
| 未ステージの変更を、--staged 指定時はステージ済みの変更を表示する。 | git diff --staged |
| 最後のコミット以降の全変更を、ステージの有無にかかわらず表示する。 | git diff HEAD |
| ブランチとマージ |
|---|
| ブランチの一覧表示・作成・削除を行う。 | git branch feature-x |
| マージ済みブランチを削除する(-D で強制、-a で全ブランチ一覧)。 | git branch -d feature-x |
| ブランチを切り替える(checkout の現代的な後継)。 | git switch feature-x |
| 新しいブランチを作成し、一度に切り替える。 | git switch -c feature-x |
| ブランチ切替やファイル復元を行う(古くて範囲の広いコマンド)。 | git checkout feature-x |
| 別ブランチの変更を現在のブランチに取り込む。 | git merge feature-x |
| 競合したマージを取り消し、ブランチを以前の状態に戻す。 | git merge --abort |
| 現在のブランチのコミットを別ブランチの上に再生する。 | git rebase main |
| コミットを再生しながら、統合・並べ替え・編集を行う。 | git rebase -i main |
| 別ブランチの単一コミットをこのブランチにコピーする。 | git cherry-pick a1b2c3d |
| コミットにバージョンなどの読みやすいラベルを付ける。 | git tag -a v1.2.0 |
| 別ブランチを別フォルダーで同時にチェックアウトする。 | git worktree add ../repo-feature feature-x |
| 履歴の調査 |
|---|
| コミット履歴をたどる。 | git log --oneline --graph --decorate |
| 現在のブランチだけでなく、全ブランチの履歴をたどる。 | git log --oneline --graph --all |
| 1つのコミットの完全なdiffとメッセージを表示する。 | git show HEAD |
| ファイルの各行を最後に変更した人を表示する。 | git blame src/app.ts |
| 破棄されたものも含め、HEADが指したことのある全コミットを表示する。 | git reflog |
| 履歴を半分ずつ絞り込み、壊したコミットを特定する。 | git bisect start |
| コミットを著者別に要約する。 | git shortlog -sn |
| 直近のタグから数えて、現在のコミットに名前を付ける。 | git describe --tags |
| リモートでの共同作業 |
|---|
| リモートリポジトリの一覧表示や追加を行う。 | git remote add origin <url> |
| リモートをfetch URLとpush URL付きで一覧表示する。 | git remote -v |
| リモートの変更を、ブランチを変更せずにダウンロードする。 | git fetch origin |
| リモートの変更を取得し、削除済みリモートブランチの参照を捨てる。 | git fetch --prune |
| 現在のブランチのリモート変更を取得してマージする。 | git pull --rebase |
| ローカルのコミットをリモートへ送信する。 | git push -u origin feature-x |
| 先に誰もpushしていなければ、リモートブランチを上書きする。 | git push --force-with-lease origin feature-x |
| 変更の取り消し |
|---|
| ワーキングツリーの変更を破棄する、またはステージを解除する。 | git restore src/app.ts |
| ファイルをステージから外し、編集はワーキングツリーに残す。 | git restore --staged src/app.ts |
| 現在のブランチの先端と、必要に応じてインデックスを移動する。 | git reset --hard HEAD~1 |
| 以前のコミットを打ち消す新しいコミットを追加する(共有しても安全)。 | git revert HEAD |
| 未追跡のファイルとフォルダーを削除する。 | git clean -fd |
| stash(退避) |
|---|
| 未コミットの作業を保存し、ワーキングツリーをリセットする。 | git stash -u |
| 保存したすべてのstashを表示する。 | git stash list |
| stashを再適用し、保存は保持する。 | git stash apply stash@{1} |
| 不要になったstashを削除する。 | git stash drop stash@{1} |
| 最新のstashを再適用して削除する。 | git stash pop |
| ファイルとサブモジュール |
|---|
| ファイルを移動・リネームし、変更をステージする。 | git mv old.ts src/new.ts |
| ファイルを削除し、削除をステージする。 | git rm src/old.ts |
| 別のリポジトリをフォルダーとしてこの中で追跡する。 | git submodule add git@github.com:org/lib.git lib |
| 大きなリポジトリから指定したフォルダーだけをチェックアウトする。 | git sparse-checkout set src docs |
| コミットのツリーをtarまたはzipファイルとして書き出す。 | git archive -o repo.zip HEAD |