
Git & GitHub コマンド一覧
GitGitHub
Git & GitHub コマンド一覧
Gitコマンド備忘録:状況・目的別 完全ガイド
1. セットアップと設定 (config
)
コマンド | 説明 | 主な使用状況 |
---|---|---|
git config --global user.name "名前" |
PC全体で使われるデフォルトのコミット作成者名を設定する。 | Gitをインストールした直後に一度だけ実行。 |
git config --global user.email "メアド" |
PC全体で使われるデフォルトのコミット作成者メールアドレスを設定する | Gitをインストールした直後に一度だけ実行。GitHub連携のため、登録済みメアドを推奨。 |
git config user.name "名前" |
現在いるリポジトリのみで使われる作成者名を設定する(--global なし) |
複数アカウント運用時、プロジェクトごとにコミット名を使い分けたい時に使用。 |
git config user.email "メアド" |
現在いるリポジトリのみで使われるメールアドレスを設定する。 | 複数アカウント運用時、プロジェクトごとにコミットメールアドレスを使い分けたい時に使用。 |
2. 日常的な開発サイクル
コマンド | 説明 | 主な使用状況 |
---|---|---|
git init |
現在のディレクトリをGitリポジトリとして初期化する。 | 新しいプロジェクトをローカルで開始する時。 |
git status |
最重要コマンド。 ワーキングディレクトリとステージングエリアの状態を表示する。 | 常に実行して「今どうなっているか」を確認する。 |
git add <file> |
特定のファイルの変更をステージングエリアに追加する。 | ファイルを修正・作成した後、コミットの準備をする時。 |
git add . |
カレントディレクトリ以下のすべての変更をステージングエリアに追加する。 | 複数のファイルをまとめてコミット準備する時。 |
git add -p |
ファイルの変更箇所を対話的に一つずつ確認しながらステージングする。 | 一つのファイルに複数の変更が含まれる時、関連する変更だけをコミットしたい場合。 |
git commit -m "メッセージ" |
ステージングエリアにある変更を、メッセージ付きでローカルリポジトリの履歴に記録する。 | git add で準備ができた後、変更内容を確定・保存する時。 |
git commit --amend |
(push前のみ) 直前のコミットを修正する。メッセージの変更やファイルの追加が可能。 | コミットメッセージを間違えた時や、ファイルを追加し忘れた時に使う。 |
3. 差分と履歴の確認 (log
, diff
, blame
)
コマンド | 説明 | 主な使用状況 |
---|---|---|
git log |
コミットの履歴を一覧表示する。 | 過去の変更履歴を確認したい時。 |
git log --oneline --graph |
コミット履歴を1行のグラフ形式で、ブランチの分岐・マージを視覚的に表示する。 | 複雑なブランチの歴史を理解したい時。 |
git log -p <file> |
特定のファイルに関するコミット履歴と、その変更内容(diff)を表示する。 | 特定のファイルがどのように変更されてきたかを調査したい時。 |
git diff |
ワーキングディレクトリとステージングエリアの差分を表示する(add していない変更)。 |
これからadd する内容を確認したい時。 |
git diff --staged |
ステージングエリアと最新コミットの差分を表示する(add 済みの変更)。 |
これからcommit する内容を最終確認したい時。 |
git diff <branch1>..<branch2> |
2つのブランチ間の差分を表示する。 | プルリクエストを作成する前に、変更内容全体を確認したい時。 |
git blame <file> |
ファイルの各行が、誰によって、どのコミットで最後に変更されたかを表示する。 | 特定のコード行の背景や意図を知りたい時、「このコードを書いたのは誰だ?」を調べたい時。 |
4. ブランチ操作 (branch
, switch
, merge
, rebase
)
コマンド | 説明 | 主な使用状況 |
---|---|---|
git branch |
ローカルブランチの一覧を表示する。 | 現在のブランチ状況を確認する時。 |
git branch -a |
リモートも含めた、すべてのブランチの一覧を表示する。 | ローカルとリモートの状態を比較・確認したい時。 |
git switch <branch> |
指定した既存のブランチに切り替える。 | 別の作業に移る時。 |
git switch -c <new_branch> |
新しいブランチを作成し、同時にそのブランチに切り替える。 | 新機能開発やバグ修正を開始する時。 |
git merge <branch> |
現在いるブランチに、指定したブランチの変更を取り込む。マージコミットが作られる。 | feature ブランチの作業が完了し、main ブランチにその内容を反映させたい時。 |
git rebase <branch> |
(push前推奨) 現在のブランチの根本を、指定したブランチの先端に付け替え、歴史を一直線にする。 | feature ブランチをmain の最新状態に追随させたい時や、歴史を綺麗に保ちたい時。 |
git rebase -i HEAD~N |
(push前のみ) 最新からN個のコミットを対話的に編集(結合、削除、順序変更など)する。 | push する前に、複数のコミットを綺麗にまとめたい時。 |
5. リモートリポジトリとの連携 (remote
, push
, pull
, clone
, fetch
)
コマンド | 説明 | 主な使用状況 |
---|---|---|
git clone <URL> |
リモートリポジトリを、ローカルPCに丸ごと複製する。 | 既存のプロジェクトに参加する時。 |
git remote -v |
登録されているリモートリポジトリの一覧とURLを表示する。 | 接続先が正しく設定されているか確認したい時。 |
git remote add <name> <URL> |
新しいリモートリポジトリを登録する。 | git init で始めたリポジトリを、初めてGitHubに接続する時。 |
git remote set-url <name> <URL> |
既存のリモートリポジトリのURLを変更する。 | 接続先URLを間違えた時や、HTTPSからSSHに切り替える時。 |
git push |
現在のブランチのコミットを、対応するリモートブランチに送信する。 | ローカルでのコミットをGitHubに反映させたい時。 |
git push -u origin <branch> |
ブランチをpush し、同時にアップストリームを設定する。 |
ローカルで新しく作ったブランチを、初めてリモートにpush する時。 |
git push --force-with-lease |
(注意) リモートの歴史を、ローカルの歴史で強制的に上書きする。 | reset やrebase でローカルの歴史を修正した後、リモートに反映させる時に使う。 |
git pull |
リモートの変更をローカルにダウンロードし、現在のブランチにマージする。 | 他の人の変更や、GitHub上でマージされた変更を取り込みたい時。 |
git fetch |
リモートの最新情報をローカルにダウンロードするだけ。ローカルのファイルは変更しない。 | リモートの状態を確認したいが、まだ自分の作業とマージしたくない時に使う。 |
6. 作業の取り消しと修正 (reset
, revert
, restore
, stash
, rm
)
コマンド | 説明 | 主な使用状況 |
---|---|---|
git restore <file> |
ワーキングディレクトリの変更を破棄する。 | ファイルへの変更をすべて取り消したくなった時。 |
git restore --staged <file> |
ステージングエリアに追加した変更をワーキングディレクトリに戻す(add を取り消す)。 |
git add はしたが、まだコミットに含めたくない時。 |
git reset --hard <commit> |
(注意) 歴史、ステージング、ワーキングディレクトリを指定したコミットの状態に強制的に巻き戻す。 | push 前のローカルでの間違いを、完全に消し去りたい時。 |
git revert <commit> |
指定したコミットの変更内容を打ち消す、新しいコミットを作成する。歴史は改変しない。 | push 済みのコミットを、安全に取り消したい時(推奨)。 |
git stash |
コミットしていない変更を、一時的な保管場所に退避させる。 | ブランチを切り替えたいが、まだコミットしたくない変更がある時。「ブランチ間違えた!」の修正に最適。 |
git stash pop |
stash で退避させた最新の変更を、現在のブランチに取り出して適用する。 |
退避させた変更を、別のブランチで再開したい時。 |
git rm <file> |
ファイルをワーキングディレクトリから削除し、その削除をステージングエリアにも追加する。 | Gitで追跡しているファイルを、リポジトリから削除したい時。 |
git merge --abort |
コンフリクトが発生して中断しているマージ作業を、完全に中止してマージ開始前の状態に戻す。 | マージのコンフリクトが複雑で、一度仕切り直したい時。 |
7. 高度な操作と複数アカウント運用
コマンド | 説明 | 主な使用状況 |
---|---|---|
git cherry-pick <commit> |
他のブランチにある特定のコミット1つだけを、現在のブランチにコピーして適用する。 | あるブランチで行ったバグ修正コミットだけを、別のブランチにも適用したい時。 |
git reflog |
reset などで消えたように見えるコミットも含め、ローカルリポジトリのすべての操作履歴を表示する。 |
間違ってブランチを消したり、reset しすぎたりした時のための「最終安全装置」。 |
ssh-keygen |
SSHのキーペア(公開鍵と秘密鍵)を作成する。 | GitHubとSSH接続を設定する時。 |
ssh-add |
SSHエージェントに秘密鍵を登録する。パスフレーズの再入力を省略できる。 | SSH接続を快適に使うため。 |
gh auth login |
GitHub CLIを使って、現在の環境をGitHubに認証させる。 | Dev Containerなど、ローカルPCとは別の環境からGitHubに接続する際の認証設定に使う。 |