Gitコマンドリファレンス - よく使うコマンドをまとめた早見表
Gitの実務でよく使うコマンドをまとめたリファレンス。コマンドごとに用途と主要オプションを掲載している。
初期設定
git config --global user.name "名前"
git config --global user.email "メールアドレス"
git config --global core.editor "vim" # エディタ設定
git config --list # 設定の一覧表示
プロジェクトごとに設定を上書きする場合は --global を省略する(--local または省略で同じ)。
リポジトリの作成・取得
| コマンド | 説明 |
|---|---|
git init | カレントディレクトリをリポジトリとして初期化 |
git init <ディレクトリ> | 指定ディレクトリにリポジトリを作成 |
git clone <URL> | リモートリポジトリをクローン |
git clone <URL> <ディレクトリ> | 指定名のディレクトリにクローン |
git clone --depth 1 <URL> | 最新コミットのみ取得(shallow clone) |
変更の確認
git status # 変更ファイルの一覧
git status -s # 短縮形式で表示
git diff # 未ステージの変更を表示
git diff --staged # ステージ済みの変更を表示
git diff HEAD # 直前のコミットとの差分
git diff <ブランチ1>..<ブランチ2> # ブランチ間の差分
ステージングとコミット
git add <ファイル> # 特定ファイルをステージ
git add . # カレントディレクトリ以下を全てステージ
git add -p # 変更を部分的に選択してステージ(対話的)
git add -u # 追跡済みファイルの変更のみステージ
git commit -m "メッセージ" # コミット
git commit -am "メッセージ" # add + commit(追跡済みファイルのみ)
git commit --amend # 直前のコミットを修正(未プッシュのみ推奨)
ログの確認
git log # コミット履歴
git log --oneline # 1行形式
git log --oneline --graph # ブランチのグラフ表示
git log --oneline --graph --all # 全ブランチを含む
git log -n 10 # 直近10件
git log --author="名前" # 特定ユーザーのコミット
git log --since="2024-01-01" # 日付で絞り込み
git log <ファイル> # 特定ファイルの変更履歴
git show <コミットID> # 特定コミットの詳細
ブランチ操作
git branch # ローカルブランチ一覧
git branch -a # リモート含む全ブランチ一覧
git branch <ブランチ名> # ブランチ作成
git branch -d <ブランチ名> # ブランチ削除(マージ済みのみ)
git branch -D <ブランチ名> # ブランチ強制削除
git branch -m <旧名> <新名> # ブランチ名変更
# チェックアウト(切り替え)
git switch <ブランチ名> # ブランチ切り替え(Git 2.23+)
git switch -c <ブランチ名> # 作成して切り替え(Git 2.23+)
git checkout <ブランチ名> # ブランチ切り替え(旧来の書き方)
git checkout -b <ブランチ名> # 作成して切り替え(旧来の書き方)
git switch は Git 2.23 で追加されたコマンドで、checkout の切り替え機能を分離したもの。新しい環境では switch を使うのが推奨される。
マージとリベース
# マージ
git merge <ブランチ名> # 指定ブランチをマージ
git merge --no-ff <ブランチ名> # マージコミットを強制作成
git merge --squash <ブランチ名> # コミットをまとめてマージ(コミットは別途必要)
git merge --abort # マージを中断
# リベース
git rebase <ブランチ名> # 指定ブランチ上にリベース
git rebase -i HEAD~3 # 直近3コミットを対話的に操作
git rebase --continue # 競合解消後に再開
git rebase --abort # リベースを中断
マージとリベースの使い分け
| 操作 | 用途 |
|---|---|
merge | コミット履歴を保持したい場合、チームリポジトリへの統合 |
rebase | 履歴を整理したい場合、共有前のローカルブランチ整理 |
リベースは公開済みのコミットに使うと他の開発者の履歴と競合するため注意が必要。
リモート操作
git remote -v # リモートリポジトリ一覧
git remote add origin <URL> # リモートを追加
git remote rename origin upstream # リモート名変更
git remote remove <名前> # リモート削除
git remote set-url origin <URL> # リモートのURLを変更
git fetch # リモートの変更を取得(マージしない)
git fetch origin # originから取得
git pull # fetch + merge
git pull --rebase # fetch + rebase
git push origin <ブランチ名> # プッシュ
git push -u origin <ブランチ名> # 上流ブランチを設定してプッシュ
git push --force-with-lease # 安全な強制プッシュ(他の変更がなければ)
git push origin --delete <ブランチ名> # リモートブランチを削除
--force は他の変更を上書きするリスクがあるため、--force-with-lease の使用を推奨する。
取り消し操作
ファイル単位の取り消し
git restore <ファイル> # ワーキングツリーの変更を取り消し(Git 2.23+)
git restore --staged <ファイル> # ステージを取り消し(Git 2.23+)
git checkout -- <ファイル> # ワーキングツリーの変更を取り消し(旧来)
git reset HEAD <ファイル> # ステージを取り消し(旧来)
コミット単位の取り消し
git revert <コミットID> # 指定コミットを打ち消す新コミットを作成
git revert HEAD # 直前のコミットを打ち消す
git reset --soft HEAD~1 # 直前のコミットを取り消し(変更はステージに残る)
git reset --mixed HEAD~1 # 直前のコミットを取り消し(変更はワーキングツリーに残る)
git reset --hard HEAD~1 # 直前のコミットを取り消し(変更も破棄)
| コマンド | コミット | ステージ | ワーキングツリー |
|---|---|---|---|
reset --soft | 取り消し | 保持 | 保持 |
reset --mixed | 取り消し | 取り消し | 保持 |
reset --hard | 取り消し | 取り消し | 取り消し |
reset --hard は変更が完全に失われるため注意。共有リポジトリでの使用は避ける。
Stash(一時退避)
git stash # 変更を一時退避
git stash push -m "メッセージ" # メッセージ付きで退避
git stash list # 退避一覧
git stash pop # 最新の退避を戻してスタックから削除
git stash apply stash@{0} # 指定の退避を戻す(スタックは残る)
git stash drop stash@{0} # 指定の退避を削除
git stash clear # 全ての退避を削除
git stash branch <ブランチ名> # 退避からブランチを作成
-u(--include-untracked)を付けると未追跡ファイルも退避できる。
タグ
git tag # タグ一覧
git tag <タグ名> # 軽量タグを作成
git tag -a <タグ名> -m "説明" # 注釈付きタグを作成
git tag -a <タグ名> <コミットID> # 特定コミットにタグを作成
git show <タグ名> # タグの詳細
git push origin <タグ名> # タグをプッシュ
git push origin --tags # 全タグをプッシュ
git tag -d <タグ名> # ローカルタグを削除
git push origin --delete <タグ名> # リモートタグを削除
検索
git grep "検索文字列" # 追跡ファイル内を全文検索
git grep -n "検索文字列" # 行番号付き
git log --all --grep="キーワード" # コミットメッセージを検索
git log -S "キーワード" # 追加・削除された文字列を検索
git bisect start # 二分探索でバグ導入コミットを特定
よく使う便利操作
特定ファイルの変更をなかったことにする
git checkout HEAD -- <ファイル>
別ブランチの特定コミットを取り込む
git cherry-pick <コミットID>
ファイルの追跡をやめる(.gitignoreに追記後)
git rm --cached <ファイル>
コミット履歴を保持したままファイルをリネーム
git mv <旧ファイル名> <新ファイル名>
直前のブランチに戻る
git switch -
git checkout -
作業ツリーをクリーンにする
git clean -fd # 未追跡のファイルとディレクトリを削除
git clean -fdn # 削除対象のドライラン(実際には削除しない)
.gitignore の書き方
# コメント
node_modules/ # ディレクトリ
*.log # 拡張子
.env # 特定ファイル
!important.log # 例外(除外しない)
/dist # ルート直下のみ
**/cache/ # 全階層の cache/ ディレクトリ
.gitignore に追加する前に既に追跡済みのファイルは git rm --cached で追跡を解除する必要がある。
参考リンク
- Git Reference - Git公式リファレンス
- Pro Git(日本語版) - Git公式書籍(無料)