本記事では、新人エンジニアのタカノリくんが、初めてのチーム開発でGitを使ってタスクをこなすシーンを通じて、git checkout コマンドの使い方と新しいブランチを作成する理由、作業後のブランチの切り替えについて学んでいきます。
【シナリオ】
タカノリくんは、仮想通貨の取引を行うWebアプリケーションを開発するプロジェクトチームに参加しました。今日から彼は、新たな機能の開発に取り組みます。開発する機能は"ユーザープロフィール表示"です。
STEP 0: ブランチの状態を確認する
まず、タカノリくんは自分が現在どのブランチにいるのか確認します。これには git branch コマンドを使用します。
$ git branch
このコマンドを実行すると、以下のような出力が得られます:
* main
ここで * は現在のブランチを示しており、タカノリくんは現在 main ブランチにいることがわかります。
STEP 1: 新しいブランチを作る
次に、新しい機能を追加するための新しいブランチを作ります。この操作は git checkout -b コマンドを使って行います。
$ git checkout -b user-profile
これで user-profile ブランチが作成され、そのブランチに切り替えられました。タカノリくんはこのブランチでユーザープロフィール表示の新機能を開発します。
STEP 1.5: git log を確認し、HEADの位置を理解する
タカノリくんは git log コマンドを使って、自分が今どのブランチにいるのか、最新のコミットは何かを確認します。
$ git log
そして、こんな出力が得られます。
commit a1b2c3d4e5f67890g
Author: Takanori <takanori@example.com>
Date: Fri Jul 7 14:53:40 2023 +0900
Add user-profile feature
HEAD -> main, origin/main, origin/HEAD
ここで (HEAD -> main) と表示されています。これは現在 HEAD(つまり私たちが作業している位置)が main ブランチにあることを示しています。もし、この位置が user-profile ブランチであれば (HEAD -> user-profile) と表示されます。
STEP 2: 新しい機能の開発
タカノリくんは user-profile ブランチで新機能の開発を進めます。コードが書き終わったら、git add と git commit コマンドを使って変更をコミットします。このブランチはタカノリくんが自由に変更できるので、試行錯誤しながらコーディングを進めることができます。
STEP 3: git checkout で元のブランチに戻る
新機能の開発が完了し、テストも無事に通ったとします。タカノリくんは次に、自分の変更をメインブランチにマージするために、まず main ブランチに戻ります。このときも git checkout コマンドを使います。
$ git checkout main
これでタカノリくんは main ブランチに戻ることができました。main ブランチに戻る理由は、新たに作成した機能をメインブランチに統合(マージ)するためです。これにより他の開発者もタカノリくんが追加した新機能を利用することができます。
STEP 4: main ブランチへのマージ
タカノリくんが main ブランチに戻ったら、次に新たに作成した user-profile ブランチを main ブランチにマージします。この操作により、main ブランチにタカノリくんが追加した新機能が反映されます。このマージ操作は git merge コマンドを使って行います。
$ git merge user-profile
これで main ブランチに user-profile ブランチの変更が統合されました。
STEP 5: 変更をリモートリポジトリにプッシュする
最後に、ローカルリポジトリの変更をリモートリポジトリに反映します。これにより、チームメイトもタカノリくんが追加した新機能を利用することができます。この操作は git push コマンドを使って行います。
$ git push origin main
これでリモートリポジトリの main ブランチにも新機能が反映されました。
STEP 6: チームメイトが新機能を利用する
タカノリくんが新しい機能を main ブランチにマージし、リモートリポジトリにプッシュした後、その新機能を他のチームメイトが使いたい場合、彼らは次の手順を踏む必要があります。
STEP 6.1: 最新の main ブランチを取得する
まず、他のチームメイトは自分のローカルリポジトリが最新の状態であることを確認する必要があります。これには git pull コマンドを使用します。
$ git checkout main
$ git pull origin main
これにより、リモートリポジトリの最新の main ブランチ(タカノリくんが追加した新機能がマージされた状態)が、チームメイトのローカルリポジトリの main ブランチに反映されます。
STEP 6.2: 新機能を使うための新しいブランチを作成する
次に、チームメイトは新機能を使うための新しいブランチを作成します。ここでも git checkout -b コマンドを使います。
$ git checkout -b new-feature-using-profile
これで new-feature-using-profile ブランチが作成され、そのブランチに切り替えられました。チームメイトはこのブランチで新機能(ユーザープロフィール表示)を利用した開発を行います。
まとめ
git checkout コマンドは、ブランチの作成と切り替えを行う非常に便利なツールです。新しいブランチを作成し、そこで作業を行うことで、他のメンバーとの作業の干渉を防ぎます。作業が完了したら、main ブランチに戻り、新機能を main ブランチに統合します。そして、その変更をリモートリポジトリにプッシュすることで、チーム全体で新機能を利用できるようになります。ぜひ参考にしてみてください。