この記事について
本記事は社内で実施したGit講習のスライドを元に作成された記事です。
Gitを使ってはいるものの、どういう構造になっているかとか仕組みについてはあまりわかっていないという方たちを対象にしています。
前回
イントロダクション
ここまでの説明の中で時々出てきた「ブランチ」について後輩ちゃんが気になっているようです。
今回はブランチについて学んで行きましょう。
ブランチとは
ブランチは、リポジトリの異なるバージョンを指すものです。
ブランチは連続したコミットの塊で構成されており、ブランチから別のブランチを作成することで異なったバージョンの変更を行うことができます。
競合
確かに枝分かれをしたものを統合した時に変更箇所が衝突してしまうことがありそうです。
ここでは競合について見ていきましょう。
マージと競合
マージは、2つ以上のブランチを組み合わせて一つの単一ブランチにする過程を指します。
競合(コンフリクト)は、2つのブランチが同じ行を異なる方法で変更し、マージしようとしたときに発生します。
競合を発生させてみよう
では、実際にブランチを作成して競合を発生させてみましょう。
前回までに作ったローカルリポジトリとリモートリポジトリを使います。
まず、ブランチをmainブランチに切り替えてみましょう
git checkout main
これを実行したところ、下記のように表示され、既にmainブランチになっていたことがわかります。
Already on 'main'
Your branch is up to date with 'origin/main'.
ここからbranchAというブランチを作成してみます
git checkout -b branchA
これを実行すると下記のように表示され新しくブランチが作成される共にそのブランチに切り替わったことがわかります。
Switched to a new branch 'branchA'
次にファイルの更新、インデックスに追加、コミットを実行します。
echo 'xxxxx' >> hello.txt
git add hello.txt
git commit -m "add xxxxx"
これでhello.txtにxxxxxという行が書き込まれて、ローカルリポジトリに書き込まれました。
今度はmainに切り替えた後にbranchAをmainにマージしてみましょう。
git checkout main
git merge branchA
これを実行すると下記のようにマージ結果が表示されます。
Updating 95954ba..f729c2e
Fast-forward
hello.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
VSCodeの場合
SourceTreeの場合
次回
第6話「ブランチの流れを整理:リベースの導入」へと続きます
https://qiita.com/sho_fcafe/items/104057c0c5e22d59527d