こんにちは、ECF Techブログ
担当 Michiです。
今回はGitを使ってみようシリーズの第4回「ブランチ編」です。よろしくお願いします。
本記事は、前回記事からの続きとなっています。本記事のみでもご活用いただける配慮はしておりますが、もしGitを初めて見たいというかたはどうぞご活用ください。
対象読者
- コマンドプロンプト上でのコマンドである
cd
やdir
を使ったことがある - エクスプローラでファイル操作ができる
- バージョン管理やgitって何?という方
- ハンズオン形式で試せる資料がほしいという方
※なお、本資料はWindows向けの資料となっています。
前回はGitの基本となる操作をご紹介しました。今回は、バージョン管理機能の要ともいえるブランチについて学んでいけたらと思います。
ブランチとは
Gitを含め、バージョン管理システムでは特定の領域のファイルの変更履歴を記録しています。履歴ですので、次のような時間軸で記録されています。
実際のシステム開発では1つの機能追加に何日も要するということも珍しくありません。そのため、自分だけの変更履歴をつくり、プログラムの変更記録を取りながら少しずつ開発を進めたいという要望があります。ブランチはそのような要望にこたえてくれるものです。
ブランチを作ってみよう
では実際にブランチを使っていきましょう。今回は開発者のAさんがprogram01.txtに記載されている機能Bのプログラムの別バージョンを試しに作成する。という想定で行ってみましょう。
ここからは前回記事の続きとして作成しますので、ご覧になりたい方はこちらのリンクをご利用ください。
ではまずコマンドプロンプトを開き、ローカルリポジトリを作成したC:\work01\hello_repo
に移動します。
早速ブランチを作ります。git branch ブランチ名
のコマンドでブランチを作成することができます。今回はAさん専用ブランチということで、onlyAという名前にします。
- リポジトリを作った時点から存在するブランチにはあらかじめ「master」という名前がついています。
- ブランチを作成することを「ブランチを切る」という場合があります。
次のコマンドを実行してください。
git branch onlyA
これでブランチが作成されました。が、まだ作成しただけです。作成したブランチで作業履歴を残していくためには、ブランチを切り替える操作が必要となります。この操作はチェックアウトと呼ばれ、git checkout ブランチ名
コマンドで行なうことができます。次のとおり入力します。
git checkout onlyA
実行結果
Switched to branch 'onlyA' C:\work01\hello_repo>
作業ブランチが切り替わりました。
ではこのブランチでプログラムを作成していきましょう。program01.txtを開き、次のようにします(※2行目が追加になっています)。
計算できる機能A +計算できる機能A-2 計算できる機能B
計算できる機能Aに新しい機能が追加されたイメージです。
ではこの時点でコミットしましょう。下のコマンドでファイルをコミット対象にします。
git add .
この時点でgit status
コマンドを使って、いまのリポジトリの状態を見てみましょう。次のコマンドになります。
git status
実行結果
On branch onlyA Changes to be committed: (use "git restore --staged..." to unstage) modified: program01.txt
ブランチがonlyAであること、program01.txtが modified(修正されている) 状態であることがわかります。
では、git commit
コマンドでコミットしましょう。次のコマンドを実行します。
git commit -m "A-2を追加"
実行結果
[onlyA 046bec1] A-2を追加 1 file changed, 1 insertion(+), 1 deletion(-)
コミットが完了しましたので、元のブランチに戻ってみましょう。ブランチの移動はgit checkout ブランチ名
です。次のコマンドを実行します。
git checkout master
ブランチを移動したら、program01.txt を開いてみましょう。
計算できる機能A 計算できる機能B
追加したA-2の機能がなくなり、元に戻っていることがわかります。つまりmasterブランチは全く別の管理であることがわかります。
これで今後どれだけブランチでの作業を行なったとしても、すぐに元の状態に戻すことができます。
ではonlyAブランチに戻って作業を続けましょう。次のコマンドでブランチを移動します。
git checkout onlyA
移動したらprogram01.txtを開き、次のようにします。(※3行目が追加になっています)
計算できる機能A +計算できる機能A-2 +計算できる機能A-3 計算できる機能B
保存したら次の流れで、コミットします。
git add . git commit -m "機能A追加対応完了"
実行結果
[onlyA 3d917c3] 機能A追加対応完了 1 file changed, 1 insertion(+)
コミットが完了しました。このあとこれらの追加プログラムの動作テストを終え、本来のプロジェクトであるmasterブランチにプログラムを統合することになったとしましょう。この統合作業はマージ(merge)と呼ばれています。
マージをしよう!
マージを行なうのは簡単です。git merge
コマンドを利用します。今回onlyAブランチをmasterブランチにマージしたいので、一度masterブランチへ移動します。
git checkout master
実行結果
Switched to branch 'master' Your branch is up to date with 'origin/master'.
次にgit merge
コマンドを実行します。
git merge onlyA
実行結果
Updating bcaa3ed..3d917c3 Fast-forward program01.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
マージが正しく完了しました。マージ作業が正しく完了すると、そのブランチにおけるコミットも終了した状態となります。またマージ(統合)したからといって、onlyAブランチがなくなったわけではありません。
masterブランチの状態でprogram01.txtを開いてみましょう。
計算できる機能A +計算できる機能A-2 +計算できる機能A-3 計算できる機能B
onlyAブランチで行なった変更が反映されています。
ここまでの各ブランチの履歴をまとめると、下図のイメージとなります。
※図中の時間はイメージです。
最後にリモートリポジトリにPushしておきましょう。次にコマンドでOKです。
git push origin master
おわりに
今回はここまでとさせていただきます。最後までご覧くださりありがとうございました。
ブランチを活用できると機能追加を試したり、Webサイトの別のデザインを試したりなど、気軽にテスト作業ができるようになります。どんどんブランチを作っていきましょう。(※Gitではブランチをどんどん作って作業をするスタイルが推奨されています。)
合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。