概要
Gitのコマンド一覧(1)では、ローカルリポジトリを作成するgit init
から、ローカルリポジトリに反映された変更点をリモートリポジトリへ反映させるgit push
までを記した。本記事では、ブランチとは何かから説明をし、ブランチに関するコマンドをまとめ、それに付随するoriginやローカルやリモートについて説明する。(rebase等に関してはGitのコマンド一覧(3)を参照すること)
主に使っているコマンド
- init
- add
- commit
- push
- clone
- status
- log
- reflog
- branch
- checkout
- remote
- fetch
- merge
- pull
- rebase
- cherry-pick
- reset
- rm
ブランチの考え方
Gitを扱う上で重要になってくるのがブランチという考え方である。例えば、多人数で一つのシステムを開発している際に、ブランチを切らないと
clone
git clone [http]
リモートリポジトリをローカルに複製するために用いるコマンドである。(リモートとローカルの連携はどうなっているのだろうか)
branch
筆者は2通りの使い方をしている。
-
git branch
- 現在いるブランチを確認することができる。
-
git branch [branch名]
- 現在いるブランチから新たにブランチを立てることができる。(注:ブランチを生成するだけでチェックアウトはされていない)
checkout
筆者は2通りのの使い方をしている。
-
git checkout [branch]
- [branch]へ切り替える時に用いる。([branch]が存在しない場合、エラーを吐く)
-
git checkout -b [branch]
-
git branch [branchA]
->git checkout [branchA]
と同義。 - ブランチを新しく生成し、生成したブランチへチェックアウトする。
-
remote
私はリモートリポジトリを追加/登録する際や、リモートリポジトリを確認(リポジトリに格納されているファイルのことではない)する際に用いている。
ブランチを切ってバージョンを管理しよう
開発したシステムを新しい機能を実装したり、発見したバグを修正する場合に、メインのブランチ(恐らくmasterブランチもしくはdevelopブランチ)を直接改修することは一般的にはしない。その理由として、実装したものがエラーを吐いたり、ライブラリの衝突などが発生した場合に、システムが動かなくなる可能性があるためである。ここら辺の考え方はA/Bテストと近いような気がしているが、実際に動かしているシステムとは別の(裏の)ところで改修を加え、実際に問題がなかったら本システムにその変更部分を反映させるのがいいだろう。
改修部分に応じてブランチを切ろう
上司から改修タスクAを任されたとしよう。現状リモートリポジトリとローカルリポジトリの状態は同じで下図のようになっているとする。
ここに図を載せる
この時、以下のようにステップを取ることによってタスクを管理することができる。
git branch
git checkout -b taskA
もしくは
git branch
git branch taskA
git checkout taskA
でも可能である。git branch
はできれば毎回推奨したい。というのも、現状いるブランチを確認せずにチェックアウトするとたまに予想もしないブランチから枝(ブランチ)が生える可能性があるからだ。ブランチを切った後に気付いても修正可能だが、少し(筆者にとってはかなり)面倒なので、簡単なチェックでミスを減らせるのであるのだから、やらない手はないだろう。
グラフ等で現状を確認できるが上記のコマンドを入力するとmasterブランチの最新断面からtaskAのブランチが生成され、taskAのブランチにチェックアウトする。
ブランチを切った後は改修を加え、add -> commit -> push
を行い、リモートリポジトリにローカルで行った改修を反映させよう。
一通り改修が終わったら、元のブランチにマージ(合同開発者がいる場合はマージリクエストをお勧めする)する。
次のブログでは
次のブログでは、リモートリポジトリの情報を持ってくる fetch
等の考え方に関して説明する。