Gitでのブランチ管理

1. ブランチの理解

Gitは各コミットを時系列でつなげ、これをブランチと解釈できます。初期状態では、masterブランチという1つのブランチのみ存在します。

HEADは厳密にはコミットを指すのではなく、現在のブランチ(通常はmaster)を指しています。

2. ブランチの作成

以下のコマンドを使用して、現在のローカルにあるすべてのブランチを確認できます。

git branch

新しいブランチを作成するには:

git branch dev1

dev1ブランチが作成されます。HEADは現在のブランチを示す*マークによって示されます。

3. ブランチの切り替え

ブランチを切り替えるには以下のコマンドを使用します。

git checkout dev1

dev1ブランチに切り替えた後、新しい内容を追加しコミットします。

masterブランチに戻ると、新しく追加した内容は表示されません。

4. ブランチのマージ

masterブランチにdev1ブランチの変更を反映させるには、以下のコマンドを使用します。

git merge dev1

Fast-forwardモードでは、masterブランチのポインタが直接dev1ブランチの最新コミットを指すように移動します。

5. ブランチの削除

マージが完了したら、不要なブランチを削除できます。

git branch -d dev1

現在のブランチや未マージのブランチは削除できません。強制的に削除する場合は-Dオプションを使用します。

6. マージコンフリクト

ブランチをマージする際、コードの競合が発生することがあります。以下のように新しいブランチを作成し、それぞれ異なる変更を行います。

git checkout -b dev2
# dev2ブランチで変更
echo "aaa" >> test
git commit -m "add aaa"

# masterブランチで変更
echo "bbb" >> test
git commit -m "add bbb"

masterブランチでdev2ブランチをマージすると、競合が発生します。競合を解決し、再コミットします。

7. ブランチ管理戦略

Fast forwardモードでは、ブランチの履歴情報が失われることがあります。これを防ぐため、--no-ffオプションを使用してマージします。

git merge --no-ff -m "merge with no-ff" dev2

8. ブランチ戦略

実際の開発では以下の原則を守ります: 1. masterブランチは安定しているべきで、通常は新バージョンのリリースにのみ使用します。 2. devブランチは不安定であり、バージョンリリース時にmasterブランチにマージします。

9. バグ修正用ブランチ

開発中にmasterブランチでバグが見つかった場合、新しい一時的なブランチを作成し、修正後にマージします。

git stash
git checkout master
git checkout -b bugfix
# 修正を行い、コミット
git merge bugfix
git branch -d bugfix
git checkout dev3
git stash pop

10. 一時的なブランチの削除

未マージのブランチを強制的に削除するには、-Dオプションを使用します。

git branch -D bugfix

タグ: Git ブランチ マージ コンフリクト stash

5月17日 02:32 投稿