ブランチとは?
Gitで記録する履歴を本流から分岐(枝分かれさせる)ことです。
Gitの仕組み的な観点から見たブランチ
ブランチの情報は、リポジトリ(.gitディレクトリ)の中(.git/refs/)に記録されています。
「コミットを指し示したポインタ」になります。(具体的にはコミットされた際に採番されるコミットID(40桁のハッシュ)を記録しているだけのシンプルな仕組みです。)作業中のブランチにてブランチ内でコミットするとそのブランチ内の最新のコミットを指し示すように切り替わります。
リモートブランチについて
git fetchコマンドを実行した際に「origin/master」等のリモートブランチが作成されますが、これはリモートのブランチの内容をローカルに保存して、そのブランチへの状態へのポインタのことを指しており「リモートでの変更内容」(誰かが編集している等)を扱うブランチです。リモートブランチの内容はローカルにマージして取り込みます。
git fetchコマンドを実行するとリモートブランチに新しくコミットされた差分のコミット情報が「origin/」という接頭辞がついてローカルに保存されるのです。
ブランチの種類
masterブランチ
Gitのリポジトリを作成すると自動で最初から作られるブランチで「本流」のソースコードのことです。
基本的に、本番用の最新のソースコードが格納されている場所という認識で問題ありません。リリース専用のブランチであり実際に開発されることはありません。
トピックブランチ
短期的に使う開発作業用のブランチのことです。基本的にはmasterブランチにすぐに合流させます。
ブランチのメリット
- 別々の機能を別々の開発者が実装していても影響を及ぼすことなく開発できる点
ブランチの用途
- ベース品は同じだが、別々の機能を実装させたい場合
ブランチを作成するコマンド
1 |
git branch 作成するブランチ名 |
なお、このコマンドは基本的に必ずmasterブランチで行うようにしましょう。
別のブランチでこのコマンドを実施してしまうと、別のブランチをベースとしたさらなる別ブランチが作られてしまい階層が深くになってしまうためです。
複数ブランチがある場合にどのブランチを使うか
複数ブランチがある環境では下記のコマンドを実行して使うブランチを指定します。それ以降の操作は全て切り替え先のブランチにて行われるようになります。Gitの内部動作的にはHEAD(作業中のブランチの最新コミット)が移動する形になります。
1 |
git checkout 切り替え先のブランチ名 |
このコマンドはブランチを切り替える場合にも使いますが、本来最も一般的な用途としては特定のバージョンをワークツリーに反映させることを意味します。
ブランチを作成するのと同時にそのブランチに切り替えるコマンド
1 |
git checkout -b 作成し切り替えたいブランチ名 |
チェックアウト時の注意点
ただ、ワークツリーでmodifiedとなっているファイルがある場合は編集した内容が上書きされる恐れがあるためにチェックアウトできません。その際のエラーは下記のようになります。
1 |
error.Your local changes to the following files would be overwritten by chekout(チェックアウトすると次のファイルに対する変更が上書きされてしまう) |
この場合の対処としては、modifiedとなっているファイルをコミットするか、編集を取り消したりする必要があります。
ブランチの一覧を確認する。
1 |
git branch |
全てのブランチを表示する。
リモートリポジトリも含めて全てのブランチが表示されます。
1 |
git branch -a |
ブランチ名を変更する。
自分が今作業しているブランチのブランチ名が変わります。
1 |
git branch -m <ブランチ名> |
ブランチを削除する。
なお、masterにまだマージされていないブランチの場合は削除は実行されません。なので安全なコマンドと言えるでしょう。
1 |
git branch -d <ブランチ名> |
ブランチを強制削除する。
masterにまだマージしていなかったとしても強制的に削除をするコマンドになります。
1 |
git branch -D <ブランチ名> |
この記事へのコメントはありません。