git コマンド 一覧

## 環境
2.39.5

## リポジトリの操作
| コマンド                      | 説明                                                                                                                               |
| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
| `git init`                    | 新しいGitリポジトリを現在のディレクトリに作成                                                                                       |
| `git clone <リポジトリのURL>` | リモートリポジトリをローカルにコピー（クローン）                                                                                     |

## 変更の追跡とコミット
| コマンド                                  | 説明                                                                                                                               |
| :---------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
| `git status`                              | 作業ディレクトリとステージングエリアの状態を表示                                                                                     |
| `git add <ファイル名>`                    | 指定したファイルをステージングエリアに追加                                                                                         |
| `git add .`                               | カレントディレクトリ以下の全ての変更をステージングエリアに追加                                                                       |
| `git commit -m "<コミットメッセージ>"`    | ステージングエリアにある変更をローカルリポジトリに記録（コミット）                                                                   |
| `git log`                                 | コミット履歴を表示                                                                                                                 |
| `git log --oneline`                       | コミット履歴を一行で表示                                                                                                           |
| `git log --graph --oneline --decorate --all` | ブランチやHEADの位置をグラフィカルに表示                                                                                           |
| `git diff`                                | 作業ディレクトリの変更でまだステージングされていないものを表示                                                                       |
| `git diff --staged`                       | ステージングエリアにある変更を表示                                                                                                 |
| `git diff <コミットID> <ファイル名>`      | 特定のコミットからのファイルの変更を表示                                                                                           |

## ブランチの操作
| コマンド                      | 説明                                                                                                                               |
| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
| `git branch`                  | ローカルブランチの一覧を表示                                                                                                         |
| `git branch <ブランチ名>`     | 新しいローカルブランチを作成                                                                                                       |
| `git checkout <ブランチ名>`   | 指定したブランチに切り替え                                                                                                           |
| `git checkout -b <新しいブランチ名>` | 新しいブランチを作成し、同時にそのブランチに切り替え                                                                                     |
| `git merge <ブランチ名>`      | 現在のブランチに指定したブランチの変更をマージ（統合）                                                                               |
| `git branch -d <ブランチ名>`  | 指定したローカルブランチを削除（マージ済みのブランチに対して）                                                                         |
| `git branch -D <ブランチ名>`  | 強制的にローカルブランチを削除（未マージのブランチに対しても）                                                                       |

## リモートリポジトリとの連携
| コマンド                              | 説明                                                                                                                               |
| :------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------- |
| `git remote add <リモート名> <URL>`   | 新しいリモートリポジトリを登録。通常、`origin` という名前が使われる                                                                 |
| `git remote -v`                       | 登録されているリモートリポジトリの一覧とURLを表示                                                                                   |
| `git push <リモート名> <ブランチ名>`  | ローカルブランチの変更をリモートリポジトリに送信（プッシュ）                                                                         |
| `git push -u <リモート名> <ブランチ名>` | 初めてプッシュする際に、ローカルブランチとリモートブランチを紐付け                                                                   |
| `git pull <リモート名> <ブランチ名>`  | リモートリポジトリの変更をローカルリポジトリに取り込み（プル）                                                                         |
| `git pull --rebase <リモート名> <ブランチ名>` | リモートリポジトリの変更をリベースしながら取り込み                                                                                 |
| `git fetch <リモート名>`              | リモートリポジトリの情報をローカルにダウンロード。ローカルブランチは自動的にマージしない                                               |

## その他の便利なコマンド
| コマンド                      | 説明                                                                                                                               |
| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
| `git reset --hard <コミットID>` | 作業ディレクトリとステージングエリアを、指定したコミットの状態に戻す（注意：変更は失われる）                                                |
| `git reset --soft <コミットID>` | ローカルリポジトリのHEADを指定したコミットに戻す。ステージングエリアと作業ディレクトリはそのまま残す                                          |
| `git reset <ファイル名>`      | ステージングエリアから指定したファイルを削除（変更は作業ディレクトリに残る）                                                            |
| `git revert <コミットID>`     | 指定したコミットの変更を打ち消す新しいコミットを作成。履歴は残る                                                                         |
| `git stash`                   | 現在の作業内容を一時的に退避                                                                                                         |
| `git stash list`              | 退避させた作業内容の一覧を表示                                                                                                       |
| `git stash apply <stash名>`    | 退避させた作業内容を再度適用                                                                                                         |
| `git stash drop <stash名>`     | 退避させた作業内容を削除                                                                                                           |