gitを使っているとわけのわからないことは多いのですが(爆)、その中の1つがbranch(ブランチ)でしょう。
これも説明をきいてもわからないのですが、自分でそのケースを学習してみればすぐにわかると思います。
branchとは?
日本語訳すると枝ですが、どのようなときに使われるかというと例えば開発環境で本番と同一環境のものを保持しつつ、新規機能を取り入れたものを作りたいとします。
通常ですとこれらを2つのディレクトリに置いたりするのですが、いずれは統合したりする必要がありますし、ディレクトリ分離方式だと差分がいたるところで発生します。
そこで同一のディレクトリで枝を作り、両方の状態を記録、管理しておこう!というのがbranchの発想かと思います。(多分)
branchの作り方
通常だとディフォルトでmasterというbranchが作られます。
新しいブランチを作りたい場合、例えばrenewalというブランチ名を作成したいときは,git branch renewalとうてば無事branchが作成されます。ローカルのみでOKで、リモートはpushの際に自動的に作られるようです。
branchの一覧
branchを確認する場合はgit branch -a と入力するとブランチが出ます。ユーザーが作成したブランチと同様、追跡ブランチ(remoteとローカルの窓口みたいなもの?)も赤字で見えているかと思います。
私のリポジトリだと下記のような状態です。
1 2 3 4 |
master * renewal remotes/origin/master remotes/origin/renewal |
branchの切り替え
branchの切り替えはgit checkout ブランチ名です。
切り替えたあと、git branch -aを入力すると*のマークが指定したブランチに変わっているのがわかるかと思います。
リモートへの反映
ちなみにリモートでこのブランチを反映させるときはリモートでブランチを作り、
git push origin renewal:reneal とうちます。
いままで git push origin master とうっていましたが、正しくは
git push origin master:master (ローカルのmasterブランチとリモートのmasterブランチを統合する)の省略です。
ちなみにoriginというのはリモートのサーバーに自動でつけられる名称のようですね。
上記の git push origin master:master のコマンドの意味ですが、下記のような意味です。
originというリモートサーバーにローカルのmasterブランチのデータをリモートのmasterブランチに送る
ようやく意味がわかった・・・
ちなみに参考にしたのは下記リンクです。
Git超入門:”git push origin master”の”push”と”origin”と”master”の意味がわからないあなたへ
新ブランチをローカルに反映
別の環境でブランチを作成し、それを自分のローカル環境に取り込みたいときは、
git branch newbranch(新しいブランチ名)
git pull origin newbranch で取り込めます。
注意点としては自分のローカル環境でブランチを再作成すること。
ただし、ローカルで作ったブランチはgit branchをした際の現在のbranchの影響をうけますので、スムーズに取り込めないこともあります。
分岐を考えましょう。
↑思いっきり間違いです。
git fetch --all
で追跡ブランチを普通に取り込めます。
追記
また別の環境で新ブランチを引っ張ってくるときは、リポジトリ自体がないときはgit cloneがよいですが、すでにあればその別環境で新ブランチを作ったあとgit pullすればOKです。