ブランチとは何か
メインの作業に加えて新しい機能を追加する際
など、
作業を分岐して開発
することを指します。
mainブランチの作業に加えて"C"をコミットした際、全く異なる開発を並行作業したい場合
subブランチ(仮名)を作成し、mainブランチとは異なる開発を並行して進めることができます。
ブランチを作成する
ブランチを作成には次のコマンドを実行します
$ git branch sub
// git branch "ブランチ名"
作成したブランチを一覧表示する
次のコマンドでブランチ設定を確認できます
// ブランチの一覧を表示したい
$ git branch
// GitHubを含めた全てのブランチを確認したい
$ git branch -a
ブランチを切り替える方法
見本のようにブランチを作成しただけでは、putする対象のブランチは変更されません。
$ git switch sub
// git switch ブランチ名
$ git switch -c sub2
// ブランチを新規作成した後に切り替える
ブランチで分岐した内容をマージ(取り込み)する
見本のようにmain
sub
sub2
などブランチを複数用意し
各々のブランチへ変更内容を登録した場合、
内容を1つのブランチへ結合することができます
// 現在のブランチがmainで、subの情報を取り込みたい場合
$ git merge sub
// git merge 対象のブランチ名
GitHubにあるブランチをローカル上でマージ(結合)したい場合
$ git merge origin/sub
// git merge リモート名/取り込み対象のブランチ名
ブランチのコンフリクト(衝突)について
例えば、sub
sub2
の各ブランチにindexファイルが存在し
同じ3行目部分をそれぞれ異なる内容で修正したとします
この状況でブランチのマージを実行した場合起きる事象が
コンフリクト(衝突)
です。
コンフリクト状態で実行しようとした場合のエラーメッセージ
訳:自動マージに失敗しました。競合を修正し結果をコミットします。
コンフリクトの場合の実行結果(見本)
-
git merge
を実行するとワークツリーのファイルがマージされた状態に更新されます - コンフリクト状態になった場合は次の見本のように記号で追加情報が区別されます
- HEAD=現在のブランチ
- sub2=取込みする対象から取得した変更コード
コンフリクトが発生した場合の修正方法
- <<,==,>>などの記号を含む不要なコードを削除し上書きする
- コマンド
git reset --hard
でマージ前の状態に戻す
GitHub(リモート)からローカルへ情報を取得する方法
GitHubに最新の状態のデータがある場合、ローカルのデータを最新な状態にするには
pull
コマンドを使います
git pull origin main
// git pull リモート名 ブランチ名
// git pull 以降は省略が可能です
プルコマンドに似たフェッチコマンドについて
同じくGitHub(リモート)からローカルリポジトリに情報を取得するコマンドに
fetchコマンドが存在します
fetchコマンドを実行した場合ローカルリポジトリへ情報を取得しますが、
ワークツリー(作業環境)までは更新されません。
fetchで情報を取得した場合、ワークツリーの情報も更新したい場合は
mergeコマンドも実施する必要があります
fetchコマンドを使う場面とは
ローカルリポジトリとGitHub上のデータでコンフリクトが発生しそうな場合などに
fetchコマンドで情報を確認し、mergeを行う流れが推奨される場面があります