Skip to content

Gitコマンド 解説

実際に使うGitコマンドを、作業別にグループ化しました。リポジトリのセットアップ、スナップショット、ブランチとマージ、履歴の確認、リモートとの共有、ミスの取り消し、stashへの退避、ファイルとサブモジュールの管理。各行はコマンドと現実的な呼び出し例のペアです。

Gitには何百ものコマンドがありますが、日常業務に必要なのはごく一部です。頭の中のモデルはこうです。ワーキングツリーがあなたのファイル、インデックス(ステージング領域)が次のコミット、HEADが現在のコミット。ステージして、コミットして、共有する。statusはこまめに確認しましょう。以下は、記載されているコマンドが既に存在する前提です。

リファレンステーブル · 55 項目
55 of 55 rows
セットアップと設定
名前、メール、エディターを全リポジトリに対して一度だけ設定する。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