ブランチを作成する
Gitでブランチを作成する方法を学びましょう。
ブランチとは?
ソフトウェア開発では、複数の機能や修正を同時に進めることがよくあります。
それはひとりの開発者でも、複数の開発者がいるチームでも同じです。
また複数のバージョンを同時に開発することもあります。
つまり複数の開発を同時並行して行わなければならない状況が発生します。
そこでGitではブランチという機能で、同時並行して行う開発を支援するための仕組みを提供しています。
ブランチとは日本語で「枝」という意味です。
Gitでは、リポジトリの状態を「枝分かれ」させて、異なる開発を同時に進めることができます。
次の図では、mainブランチからfeature/1とhotfix/2という2つのブランチが分岐しています。
たとえば、feature/1ブランチでは新しい機能の開発を行い、hotfix/2ブランチではバグ修正を行うことができます。
gitGraph commit commit branch feature/1 commit commit commit checkout main branch hotfix/2 checkout hotfix/2 commit commit
ブランチのマージ(統合)
ここまでのレクチャーでも知らずのうちにブランチを使っていました。
Gitリポジトリを作成すると、デフォルトでmainというブランチが作成されます。
(前まではmasterという名前でしたが、現在はmainに変更されています)
mainブランチは、リポジトリのメインの開発を行うためのブランチです。
Gitのブランチの運用方法はプロジェクトによって異なりますが、
例えば顧客に提供や納品するためのコードはmainブランチを使用することが多いです。
ブランチは枝のように分岐させるだけでなく、分岐したブランチを統合することもできます。
ブランチを統合することを「マージ」と呼びます。
マージを行うことで、異なるブランチで行った変更を1つのブランチに統合することができます。
次の図では、feature/1ブランチで機能追加の修正を3コミット行った後に、mainブランチにマージしています。
またhotfix/2ブランチでバグ修正を2コミット行った後に、mainブランチにマージしています。
gitGraph commit commit branch feature/1 commit commit commit checkout main branch hotfix/2 checkout hotfix/2 commit commit checkout main merge feature/1 merge hotfix/2
ブランチの作成方法
では、実際にブランチを作成してみましょう。
今回はREADME.mdというファイルを追加する作業をブランチを用いて行います。
GitHubではREADME.mdというファイルをリポジトリのトップページに表示することができます。
git-practiceディレクトリをカレントディレクトリにして、次のコマンドを実行します。
git branch add-readmeこのコマンドは、add-readmeという名前のブランチを作成します。
次の図のような状態になり、add-readmeブランチが作成されます。
gitGraph commit id: "hello.txtを追加" commit id: "newfile.txtを追加" commit id: "あいさつを追加" branch add-readme checkout add-readme
ブランチを切り替える
ブランチを作成しただけでは、まだそのブランチに切り替わっていません。
ブランチを切り替えないと、そのブランチでの作業を行うことができません。
ブランチを切り替えるには、次のコマンドを実行します。
git switch add-readmeこのコマンドを実行すると、add-readmeブランチに切り替わります。
ブランチを確認する
ブランチを確認するには、次のコマンドを実行します。
git branchブランチの一覧と現在のブランチが表示されます。
現在のブランチはブランチ名の左に*が付いています。
git branch* add-readme mainブランチをシェルのプロンプトに表示する
毎回git branchコマンドを実行してブランチを確認するのは面倒です。
ブランチを切り替えたことを確認するために、シェルのプロンプトに現在のブランチ名を表示するように設定しましょう。
シェルのプロンプトにブランチ名を表示することで、現在どのブランチで作業しているかを簡単に確認できます。
Bashの場合
シェルのプロンプトにブランチ名を表示するには、~/.bashrcファイルを編集します。
bashを使用している場合は、次のように~/.bashrcファイルに設定を追加します。
export GIT_PS1_SHOWDIRTYSTATE=1export PS1='\w$(__git_ps1 " (%s)")\$ '変更したら設定を反映させましょう。
source ~/.bashrcZshの場合
MacやLinuxでZshを使用している場合は、次のように~/.zshrcファイルに設定を追加します。
autoload -Uz vcs_infoprecmd_vcs_info() { vcs_info }precmd_functions+=( precmd_vcs_info )setopt prompt_substRPROMPT=\$vcs_info_msg_0_# PROMPT=\$vcs_info_msg_0_'%# 'zstyle ':vcs_info:git:*' formats '%b'変更したら設定を反映させましょう。
source ~/.zshrcシェルのプロンプトにブランチ名が表示されるか確認する
次のように表示されれば、ブランチ名がシェルのプロンプトに表示されています。
git-practice (add-readme)$README.mdファイルを追加する
では、README.mdファイルを追加してみましょう。
echo "# Git Practice" > README.md次に、README.mdファイルをGitに追加してコミットします。
git add README.mdgit commit -m "Add README.md"次のような状態になります。
gitGraph commit id: "hello.txtを追加" commit id: "newfile.txtを追加" commit id: "あいさつを追加" branch add-readme checkout add-readme commit id:"Add README.md"
現在のブランチはadd-readmeブランチです。
add-readmeブランチにAdd README.mdというコミットが追加されました。
現在の作業ブランチではないmainブランチには変更はありません。
ブランチをマージする
ではREADME.mdファイルを追加するという作業が完了したので、
add-readmeブランチをmainブランチにマージ(統合)しましょう。
マージするには、まずマージ先のブランチに切り替える必要があります。
つまりmainブランチに切り替えます。
ブランチを切り替えるには、次のコマンドを実行します。
git switch main次に、add-readmeブランチをmainブランチにマージします。
マージするにはgit mergeコマンドを使用します。
git merge add-readme次のような状態になります。
mainブランチにadd-readmeブランチで行った変更がマージ(統合)されました。
gitGraph commit id: "hello.txtを追加" commit id: "newfile.txtを追加" commit id: "あいさつを追加" branch add-readme checkout add-readme commit id:"Add README.md" checkout main merge add-readme
git logコマンドも確認してみましょう。
mainブランチにAdd README.mdというコミットが追加されていることがわかります。
git log --onelinefb9e6df (HEAD -> main, add-readme) Add README.mdf38acd1 (origin/main) あいさつを追加0884929 newfile.txtを追加a6ab34c hello.txtを追加ブランチを削除する
ブランチをマージして、もうそのブランチでの作業が不要になった場合は、
ブランチを削除することができます。
ブランチを削除するには、次のコマンドを実行します。
-d(—delete)オプションを指定します。
git branch -d add-readmeブランチの一覧を確認すると、add-readmeブランチが削除されていることがわかります。
git branch* main変更をリモートリポジトリにプッシュする
mainブランチの状態が変更されているので、リモートリポジトリにプッシュします。
リモートリポジトリにプッシュするには、次のコマンドを実行します。
git push origin mainこれで、リモートリポジトリのmainブランチがローカルのmainブランチと同期されます。