git branch, switch, restore コマンド
概要
ブランチ操作周りでは branch, switch, restore, checkout といったコマンドを使う
- ブランチ作成/削除/一覧 : git branch
- ブランチ切替 : git switch
- 手元の変更を捨てる : git restore
- checkout はミス防止のために基本使わないことにする (switch と restore で代替可)
ブランチ作成
bash
git branch branch-A
ブランチ切り替えのみ
bash
git switch branch-A
そもそも「切り替え」とは
- HEAD が指すブランチ対象が指定したブランチに切り替わる
- commit すると そのブランチに入る
ブランチ操作一覧
上の区別は雑だったので、詳細。
| コマンド | 一覧 | 作成 | 切り替え | メモ |
|---|---|---|---|---|
| git branch | o | |||
| git branch <branch-name> | o | |||
| git checkout <branch-name> | o | 使わないことにする *1 | ||
| git switch <branch-name> | o | |||
| git switch -c <branch-name> | o | o |
削除について
| コマンド | 別の書き方 | メモ |
|---|---|---|
| git branch -d <branch-name> | --delete | merge 後でないと消せないようになってる(安全・・!) |
| git branch -D <branch-name> | --delete --force | merge しないで捨てる場合に使う |
手元の変更を捨てる + addを取り消す
- 「手元の変更を捨てる」とは「stage (add) されていたらその時点のファイルで、されていなければ HEAD 時点のファイルで上書きする」という意味で記載。
- restore コマンドは 手元を捨てるのと add を取り消すのとがセットで使えるが、何で対になっているんだろうか直感的でない気がする
| コマンド | 意味 | メモ |
|---|---|---|
| git checkout -- <filename> | 手元の変更を捨てる | 使わないことにする *1 |
| git restore <filename> | 手元の変更を捨てる | stage (add時点のファイル) または HEAD で上書きされる |
| git restore --staged <filename> | add を取り消す(手元の変更は書き換わらない) |
- *1. checkout は、引数にブランチ名を指定するかファイル名を指定するかで意味が変わるので、ミス防止のために使うのをやめることにする
- さらに、ファイル名のつもりで書いてもブランチ名と解釈されてしまう場合があるので、
--をつけるといったことも気にしないといけないので、そういう意味でも使うのをやめる
- さらに、ファイル名のつもりで書いてもブランチ名と解釈されてしまう場合があるので、
以下広告