Gitコマンドチートシート TortoiseGit対応版

基本的なGitコマンドと、対応するTortoiseGitの操作をまとめました。
随時追加していきます。

# ステージングとコミット

| 操作             | gitコマンド        |    TortoiseGit    |
|:----------------|:--------------------|:------------------|
| 作業フォルダの状態を確認する | `git status` | [TortoiseGit] > [Check for modifications] |
| ステージへ追加    | `git add <path>` | (追加するファイル上で) [TortoiseGit] > [Add…] |
| フォルダを再帰的にステージへ追加 | `git add <path>` | (フォルダ上で) [TortoiseGit] > [Add…] |
| ファイルの一部だけをステージへ追加 | `git add -p` | [Commit] ダイアログの[Modified Files]上で[Restore after commit]を実行してからファイルを編集し、そのままコミットする |
| ステージから除外 | `git reset HEAD <path>` | ? |
| 変更の取り消し | `git checkout -- <path>` | [TortoiseGit] > [Revert…] |
| ファイルを削除する | `git rm <path>` | [TortoiseGit] > [Delete] |
| ステージの内容をコミット | `git commit` | [Git Commit -> "..."] [^1] |
| 変更したファイルをステージへ追加してコミット | `git commit -a` | [Git Commit -> "..."] [^1] |

[^1]: TortoiseGitの場合、ステージの状態にかかわらず、チェックボックスをオンにしたアイテムだけをコミットすることができる。

# リモートリポジトリとのやり取り

| 操作             | gitコマンド        |    TortoiseGit    |
|:----------------|:--------------------|:------------------|
| push | `git push` | [TortoiseGit] > [Push…] |
| push先のリモートを指定 | `git push <リモート>` | [Push]ダイアログの[Destination]で指定する |
| push先のブランチ名を指定 | `git push <リモート> <ローカルブランチ>:<リモートブランチ>` | [Push]ダイアログの[Ref]で指定する |
| タグをpushする | `git push --tags` | [Push]ダイアログの[Include Tags]をオンにする |
| fetch | `git fetch` | [TortoiseGit] > [Fetch…] |
| fetch先のリモートを指定 | `git fetch <リモート>` | [Fetch]ダイアログの[Remote]で指定する |
| タグをfetchする | `git fetch --tags` | [Fetch]ダイアログの[Options] > [Tags]をオンにする |
| fetch & merge | `git pull` | [TortoiseGit] > [Pull…] |
| fetch & rebase | `git pull --rebase` | [Pull]または[Fetch]ダイアログの[Launch Rebase After Fetch]をオンにする |

# Stashの操作

| 操作             | gitコマンド        |    TortoiseGit    |
|:----------------|:--------------------|:------------------|
| stashの保存 | `git stash` | [TortoiseGit] > [Stash Save] |
| stashの適用 | `git stash pop` | [TortoiseGit] > [Stash Pop] |

# ブランチの操作

| 操作             | gitコマンド        |    TortoiseGit    |
|:----------------|:--------------------|:------------------|
| ブランチの一覧を見る | `git branch` | [TortoiseGit] > [Browse References] |
| 現在のブランチを見る | `git branch`の出力で`*`が付いている行。または、`git status` | [Git Commit -> "…"] の""の中を見る |
| ブランチを切り替える | `git checkout <branch>` | [TortoiseGit] > [Switch/Checkout…] |
| ブランチを作成 | `git branch <newbranch>` | [TortoiseGit] > [Create Branch…] |
| 分岐元のブランチ(コミット)を指定 | `git branch <oldbranch> <newbranch>` | [Create Branch]ダイアログの[Base On]で指定する |
| ブランチを作成して切り替える | `git checkout -b <newbranch> [<oldbranch>]` | [Create Branch]ダイアログの[Switch to new branch]をオンにする<br>または、[Switch/Checkout]ダイアログの[Create New Branch]をオンにする |
| ブランチを消す | `git branch -d <branch>` | [Browse References]ダイアログで[Delete Branch]<br>または、ログでブランチ名が付いたコミットを選び、[Delete /refs/heads/...] |

## マージ

| 操作             | gitコマンド        |    TortoiseGit    |
|:----------------|:--------------------|:------------------|
| マージ | `git merge <from>` | [TortoiseGit] > [Merge…] |
| マージコミットにしない | `git merge --squash` | [Merge]ダイアログの[Squash]をオンにする |
| FFしない | `git merge --no-ff` | [Merge]ダイアログの[No Fast Forward]をオンにする |
| FFでないときはマージしない | `git merge --ff-only` | [Merge]ダイアログの[Fast Forward Only]をオンにする |
| 変更をコミットしない | `git merge --no-commit` | [Merge]ダイアログの[No Commit]をオンにする |
| メッセージを指定する | `git merge -m "message"` | [Merge]ダイアログの[Merge Message]に書く |

## リベース

| 操作             | gitコマンド        |    TortoiseGit    |
|:----------------|:--------------------|:------------------|
| リベース | `git rebase <onto>` | [TortoiseGit] > [Rebase…] |
| 対話的リベース | `git rebase -i <onto>` | [Rebase]ダイアログで実施する |
| リベース先コミットを指定 | `git rebase <onto>` | ログ([Log Messages]ダイアログ)でコミットを選び、[Rebase "..." onto this…] |

参考リンク

* [TortoiseGit で git add -p 相当できた](http://blog.techlab-xe.net/archives/4393)