ゆるおたノート

Tomorrow is another day.

【Git勉強中】ブランチの移動を使い分けたい

これは覚えることがあまり無いですが、「branchを切り替えて編集」がまだ慣れません…

はじめに

基本の流れ

Git自体はじめての方は、まずはこちらからどうぞ。

【Git勉強中】操作に慣れてきたので、流れを整理してみました。 - ゆるおたノート

凡例

記号・用語 意味 説明
$ コマンドライン」で使えるコマンド 通常、Gitを始めとする「シェルスクリプト」系の説明では、コマンドの文頭に$をつけて表現されることが多いようです。
当記事でもそれに倣って記載しています。

実際にコマンドを入力するときは、git~以下をコピペしてください。
# コメント 補足事項など。
(対話モードでは使えません、、、)
<> 編集点(という表現で良いのかな…?) 任意の値(名前、識別子など)を入力してください。
(コミットの)識別子 コミットごとに付与される半角英数字7桁の番号。 SHA-1というハッシュ値だそうです。
当記事では<コミット>と表記します。

【1】ブランチのリストを出力して現在地を確認

その名もbranchコマンド。分かりやすい名前だ…

[a]ローカルリポジトリのみ表示

書き方

下記3件のコマンドは同じ結果が出力されます。

  • オプションなし(デフォルト)

    $ git branch
    

  • オプションつき

    $ git branch --list
    

  • オプションのショートハンドつき

    $ git branch -l
    

なお、これ以降、--list-lのようにオプション付きのものを2行続けて書いている場合は、「同じ意味のコマンド」を指しているものとします。

現在のブランチは、*アスタリスク)でハイライトされます。
bash等、使用するエディタによってはブランチ名に色も付きます。)

# 入力
$ git branch
 
# 結果
  branch1
* branch2
  master

[b]リモートリポジトリも含めて表示

書き方
$ git branch -a
$ git branch --all
# 入力
$ git branch -a
 
# 結果
  branch1
* branch2
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

【2】(旧)ブランチの切り替え

checkoutコマンドを使用します。
いったん現在のブランチから退出(チェックアウト)して、目的のブランチに移動するイメージなんですかね?

<2020/09/16追記>
Gitのバージョンアップにより、新しいコマンドが別途追加されました(後述)。

[a]既存のブランチへ切り替え

書き方
$ git checkout <目的のブランチ名>
# 入力
$ git checkout branch1
 
# 結果
Switched to branch 'branch1'

[b]ブランチを新規作成して切り替え

書き方

ブランチを作成することを「ブランチを切る」と呼ぶみたいです。かっこいい。

$ git checkout -b <目的のブランチ名>
# 新規作成して切り替え
$ git checkout -b branch3
 
# 結果
Switched to a new branch 'branch3'
 
# 切り替えできたか確認
$ git branch
 
# 結果
  branch1
  branch2
* branch3 # 現在のブランチに`*`がつく
  master

[c]現在の変更内容を破棄して強制的に切り替え

書き方

Gitが認識しないファイルで作業してしまった場合や、作業ツリーに変更があった場合などに使えます。

$ git checkout -f <目的のブランチ名>
$ git checkout --force <目的のブランチ名>
# 入力
$ git checkout -f branch1
 
# 結果
Switched to branch 'branch1'

【2】(ver. 2.23~)ブランチの切り替え

<2020/09/16追記>
この記事を投稿した後に、Gitのバージョンアップでcheckoutコマンドが下記2点に分離されました。

コマンド 役割
switch ブランチを移動する
restore コミット前の修正を取り消す

具体的でより使いやすいですね!

[a]既存のブランチへ切り替え

書き方
$ git switch <目的のブランチ名>

[b]ブランチを新規作成して切り替え

書き方
$ git switch -c <目的のブランチ名>
$ git switch --create <目的のブランチ名>

[c]現在の変更内容を破棄して強制的に切り替え

書き方
$ git switch -f <目的のブランチ名>
$ git switch --force <目的のブランチ名>
$ git switch --discard-changes <目的のブランチ名>

discardで「破棄する」という意味です。

このシリーズについて

Gitのコマンドについて、勉強しつつ記事にまとめています。

誤り、分かりづらい等ありましたら、ぜひコメント欄Twitterお問い合わせフォーム等でご教示ください!

次回

【Git勉強中】ステージに上げたり下げたり。 - ゆるおたノート

連載目次

  1. 【Git勉強中】操作に慣れてきたので、流れを整理してみました。 - ゆるおたノート
  2. 当記事【Git勉強中】ブランチの移動を使い分けたい - ゆるおたノート
  3. 【Git勉強中】ステージに上げたり下げたり。 - ゆるおたノート
  4. 【Git勉強中】ステージした変更を記録する - ゆるおたノート
  5. 【Git勉強中】あっ!そのコミット訂正させてください! - ゆるおたノート
  6. 【Git勉強中】自分のコミット履歴を提出する - ゆるおたノート
  7. 【Git勉強中】リポジトリの作成と接続 - ゆるおたノート

参照

【Git入門】チェックアウト(checkout)とは?使い方を基礎から解説! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト git コマンド branchの作り方 - Qiita

<2020/09/16追記>
Git - git-checkout Documentation Git - git-switch Documentation