引用先
Udemy もう怖くないGit!チーム開発で必要なGitを完全マスター
このコースではGitの裏側でどのような挙動でGitが動いているのかを図で詳しく解説しているので深く知りたい方は受講してみることをおすすめします。
#ブランチとは
並行して複数機能を開発するためにある。
共同開発において必ず必要となる。
#ブランチの仕組み
コミットをしていくと前回のコミットを親コミットとしてコミット1,2,3と時系列順にならんでいき、コミット名としてコミットID(コミットハッシュ値)を割与えられる。
ブランチとは最新のコミットIDを指すポイントにすぎない。
要するにブランチの中にデータが入っているわけではなく、いつコミットしたものかのデータ情報にすぎないということ。
####(余談)HEADについて
Gitを使っているとちょくちょくでてくるHEADについて記述。
今、自分が作業しているポインタのことをHEADという。
#新しいブランチを作成
git branch <ブランチ名>
ブランチを作成するだけで、ブランチの切り替えは行わない。
#ブランチの一覧を表示
git branch
# 全てのブランチを表示
git branch -a
何のブランチが確認する時に使う。
※印がついているのが今いるブランチ。
#ブランチを切り替える
git checkout <既存ブランチ名>
# ブランチを新規作成して切り替える
git checkout -b <新ブランチ名>
-bはbranchの略。
#変更をマージ(統合)する
git merge <ブランチ名>
git remote <リモート名/ブランチ名>
マージすると他の人の変更履歴を統合する。
##マージには3種類ある
###①Fast Foward : 早送りになるマージ
ブランチが枝分かれせずマージした時は、ブランチのポインタを前に進めるだけ。
###②Auto Merge : 基本的なマージ
枝分かれして開発していた場合、マージコミットという新しいコミットを作る。
マージコミットは親コミットを2つ持っている特徴がある(マスターブランチとブランチ)。
###③コンフリクト
同じファイルを複数人で異なる変更した時に起こる。
例えば、index.htmlの3行目を二人のエンジニアが変更しマージした時に起こる。
#コンフリクトの解決方法
コンフリクト発生画面
<h1>Gitチュートリアル</h1>
<p>ようこそ</p>
<<<<<<<HEAD
<p>git addについて学ぼう</p> ←今自分がいるブランチの変更内容
=======
<p>git commitを知ろう</p> ←別のブランチの変更内容
>>>>>>>feature
↓ 修正
<h1>Gitチュートリアル</h1>
<p>ようこそ</p>
<p>git addについて学ぼう</p>
<p>git commitを知ろう</p>
修正方法
①ファイルの内容を書き換える
②「<<」 「==」 「>>」 の記述を削除する
##コンフリクトが起きないようにするには?
① 複数人で同じファイルを変更しない
② pullやmergeする前に変更中の状態をなくしておく(commit,stashをしておく)
③ pullする時は、pullするブランチに移動してからpullする
#ブランチ名を変更
git branch -m <ブランチ名>
今作業しているブランチ名を変更できる
#ブランチを削除
# masterにマージされていない変更が残っている場合削除しない
git branch -d <ブランチ名>
# masterにマージされていなくても強制削除する
git branch -D <ブランチ名>
#ブランチを利用した開発の流れ
masterブランチをリリース用ブランチ。
開発はトピックブランチを作成して進めるのが基本。
最新のマスターからトピックごとにブランチをして、開発が終わったらマスターの方にマージしていく。