LoginSignup
0
0

Git講習第5話「ブランチの理解:作業の分岐点」

Last updated at Posted at 2023-07-12

この記事について

本記事は社内で実施したGit講習のスライドを元に作成された記事です。
Gitを使ってはいるものの、どういう構造になっているかとか仕組みについてはあまりわかっていないという方たちを対象にしています。

前回

イントロダクション

スクリーンショット 2023-07-12 13.54.04.png
ここまでの説明の中で時々出てきた「ブランチ」について後輩ちゃんが気になっているようです。
今回はブランチについて学んで行きましょう。

ブランチとは

ブランチは、リポジトリの異なるバージョンを指すものです。
ブランチは連続したコミットの塊で構成されており、ブランチから別のブランチを作成することで異なったバージョンの変更を行うことができます。
スクリーンショット 2023-07-12 13.55.42.png

競合

スクリーンショット 2023-07-12 13.56.56.png
確かに枝分かれをしたものを統合した時に変更箇所が衝突してしまうことがありそうです。
ここでは競合について見ていきましょう。

マージと競合

マージは、2つ以上のブランチを組み合わせて一つの単一ブランチにする過程を指します。
競合(コンフリクト)は、2つのブランチが同じ行を異なる方法で変更し、マージしようとしたときに発生します。
スクリーンショット 2023-07-12 13.58.41.png

競合を発生させてみよう

では、実際にブランチを作成して競合を発生させてみましょう。
前回までに作ったローカルリポジトリとリモートリポジトリを使います。

まず、ブランチを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(-)

スクリーンショット 2023-07-12 17.39.41.png

VSCodeの場合

スクリーンショット 2023-07-12 17.44.08.png
スクリーンショット 2023-07-12 17.44.34.png
スクリーンショット 2023-07-12 17.44.54.png
スクリーンショット 2023-07-12 17.45.33.png
スクリーンショット 2023-07-12 17.45.52.png
スクリーンショット 2023-07-12 17.46.10.png
スクリーンショット 2023-07-12 17.46.29.png
スクリーンショット 2023-07-12 17.46.42.png
スクリーンショット 2023-07-12 17.47.05.png
スクリーンショット 2023-07-12 17.47.21.png
スクリーンショット 2023-07-12 17.47.39.png
スクリーンショット 2023-07-12 17.47.53.png
スクリーンショット 2023-07-12 17.48.11.png

SourceTreeの場合

スクリーンショット 2023-07-12 17.50.01.png
スクリーンショット 2023-07-12 17.52.22.png
スクリーンショット 2023-07-12 17.52.38.png
スクリーンショット 2023-07-12 17.53.04.png
スクリーンショット 2023-07-12 17.53.19.png
スクリーンショット 2023-07-12 17.53.32.png
スクリーンショット 2023-07-12 17.53.42.png
スクリーンショット 2023-07-12 17.53.54.png
スクリーンショット 2023-07-12 17.54.07.png
スクリーンショット 2023-07-12 17.54.18.png
スクリーンショット 2023-07-12 17.54.31.png
スクリーンショット 2023-07-12 17.54.42.png
スクリーンショット 2023-07-12 17.54.57.png
スクリーンショット 2023-07-12 17.55.08.png

次回

第6話「ブランチの流れを整理:リベースの導入」へと続きます
https://qiita.com/sho_fcafe/items/104057c0c5e22d59527d

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0