【Git】コマンドで迷ったらコレ！Gitコマンド早わかり全集　※保存必須！



# Gitコマンドまとめ

Gitはバージョン管理システムとして、多くの開発プロジェクトで利用されています。本記事では、Gitの基本的なコマンドを用途別に分類し、それぞれのコマンドとオプションを詳しく説明します。


## 目次

1. [リポジトリの操作](#リポジトリの操作)  
2. [作業ツリーの確認と管理](#作業ツリーの確認と管理)  
3. [コミットの操作](#コミットの操作)  
4. [ブランチの操作](#ブランチの操作)  
5. [リモートリポジトリの操作](#リモートリポジトリの操作)  
6. [一時的な変更の管理](#一時的な変更の管理)  
7. [高度な操作（補足）](#高度な操作（補足）)  
   7.1. [タグの操作](#タグの操作)  
   7.2. [サブモジュールの操作](#サブモジュールの操作)  
8. [便利なショートカット](#便利なショートカット)  
9. [トラブルシューティング](#トラブルシューティング)  

---

## リポジトリの操作

| コマンド                   | 用途                      | 主なオプション                  | 説明                                                                 |
|----------------------------|---------------------------|--------------------------------|----------------------------------------------------------------------|
| `git init`                | リポジトリの初期化         | なし                           | 新しいGitリポジトリを作成します。                                    |
| `git clone <URL>`         | リポジトリの複製           | `--depth`, `--branch`         | リモートリポジトリをローカルにコピーします。特定のブランチをクローンする場合は`--branch`を指定。 |
| `git remote`              | リモートリポジトリの管理   | `add`, `remove`, `set-url`    | リモートリポジトリの追加、削除、URLの変更を行います。                 |
| `git clean`               | 不要ファイルの削除         | `-f`, `-d`                    | ワーキングツリー内の未追跡ファイルを削除。`-d`で未追跡ディレクトリも削除可能。 |

**使用例:**
```bash
# 不要ファイルを削除
$ git clean -fd
```

---

## 作業ツリーの確認と管理

| コマンド                  | 用途                     | 主なオプション                  | 説明                                                                 |
|---------------------------|--------------------------|--------------------------------|----------------------------------------------------------------------|
| `git status`             | 作業ツリーの状態確認      | `-s`                          | 簡略表示で状態を確認。                                               |
| `git add <file>`         | ファイルのステージング    | `-A`, `--all`, `-p`           | 部分的な変更をステージングする場合は`-p`を指定。                      |
| `git restore`            | ワーキングツリーの変更取り消し | `--staged`                    | ステージング済みの変更を取り消す際に使用。                            |
| `git mv <source> <dest>` | ファイルの移動・リネーム  | なし                           | Gitの履歴に変更を残す形でファイルを移動またはリネームします。         |

---

## コミットの操作

| コマンド                  | 用途                       | 主なオプション                  | 説明                                                                 |
|---------------------------|----------------------------|--------------------------------|----------------------------------------------------------------------|
| `git commit`             | 変更をコミット              | `-m`, `--amend`, `--no-edit`  | 新しいメッセージを指定せずに修正する場合は`--no-edit`。                |
| `git revert <hash>`      | 特定のコミットを取り消す     | `--no-commit`                 | 指定したコミットを取り消し、コミットしない場合は`--no-commit`を使用。 |

---

## ブランチの操作

| コマンド                     | 用途                       | 主なオプション                  | 説明                                                                 |
|------------------------------|----------------------------|--------------------------------|----------------------------------------------------------------------|
| `git branch`                | ブランチの確認・作成・削除  | `-d`, `-D`, `-m`              | `-d`: 削除, `-D`: 強制削除, `-m`: ブランチ名の変更。                 |
| `git switch`                | ブランチの切り替え          | `-c`                          | 新しいブランチを作成しつつ切り替える場合に使用。                      |
| `git merge`                 | ブランチの統合             | `--no-ff`, `--squash`         | 非ファストフォワードでマージする場合は`--no-ff`を使用。                |

---

## リモートリポジトリの操作

| コマンド              | 用途                          | 主なオプション                  | 説明                                                                 |
|-----------------------|-------------------------------|--------------------------------|----------------------------------------------------------------------|
| `git push`           | リモートリポジトリへの変更の送信 | `-u`, `--force`, `--tags`     | `-u`: トラッキング設定, `--force`: 強制送信, `--tags`: タグも送信。    |
| `git pull`           | リモートリポジトリから変更を取得 | `--rebase`                    | マージではなくリベースで取得する場合に使用。                          |

---

## 一時的な変更の管理

| コマンド              | 用途                           | 主なオプション                  | 説明                                                                 |
|-----------------------|--------------------------------|--------------------------------|----------------------------------------------------------------------|
| `git stash`          | 一時的な変更の退避              | `pop`, `apply`, `list`, `clear` | `pop`: 退避の適用＆削除, `apply`: 適用のみ, `clear`: 全スタッシュの削除。 |

---

## 高度な操作（補足）

### タグの操作

| コマンド              | 用途                      | 主なオプション                  | 説明                                                                 |
|-----------------------|---------------------------|--------------------------------|----------------------------------------------------------------------|
| `git tag`            | タグの作成・確認           | `-a`, `-d`, `-m`              | `-a`: 注釈付きタグ, `-d`: タグ削除, `-m`: メッセージ付きタグ。       |
| `git push origin <tag>` | タグのプッシュ           | なし                           | リモートにタグを送信します。                                          |

---

### サブモジュールの操作

| コマンド                  | 用途                       | 主なオプション                  | 説明                                                                 |
|---------------------------|----------------------------|--------------------------------|----------------------------------------------------------------------|
| `git submodule add <URL>` | サブモジュールの追加        | なし                           | 他のリポジトリをサブモジュールとして追加します。                      |
| `git submodule update`    | サブモジュールの更新        | `--remote`                    | サブモジュールを最新バージョンに更新します。                          |

---

## 便利なショートカット

| コマンド                  | 用途                       | 説明                                                                 |
|---------------------------|----------------------------|----------------------------------------------------------------------|
| `git alias`              | コマンドのエイリアス作成    | 長いコマンドを短縮して登録できます。                                 |

---

## トラブルシューティング

| コマンド                  | 用途                       | 説明                                                                 |
|---------------------------|----------------------------|----------------------------------------------------------------------|
| `git fsck`               | リポジトリの整合性チェック  | リポジトリ内の破損を検出します。                                     |
| `git reflog`             | ログの追跡                 | 変更履歴を追跡し、復元できます。                                     |

---

## 注意事項

- **強制的な操作（`--force`や`--amend`など）を行う場合は、慎重に実行してください。**  
- リモートリポジトリでの操作は、チームメンバーに影響を与える可能性があるため、事前に共有することを推奨します。


Gitコマンドの基本を押さえれば、効率的なバージョン管理が可能になります。ぜひ参考にしてみてください！