gitでは、ちょっとした開発やバグフィックスなどbranchを使用して開発する。
このために、頻繁にマージしたくなる。
ただし、ここであえて「マージ」と記述したのは、”git merge”のことではなく、
変更した内容を反映させたいという意味で「マージ」だ。
そのマージする際の、いろいろな手順にを覚書として記録しておく。
1)ブランチのコミットした内容も含めてマージする
git merge [ブランチ名]
2)ブランチの修正した内容すべての変更を取り込む
つまり、1)でやったこととほぼ同様だが、コミットはしない。
git merge --squash [ブランチ名]
これで、ブランチ上で行ったすべての変更が1つになって取り込まれる。
しかしながら、これでは、せっかく何度もブランチ上で育てたログが無駄になってしまう。
ログとソースをきれいにした状態で再作成したい場合にはこれではこまるので、
次の方法をとる。
3)パッチファイルを作成して、自由な単位でマージする
git format-patch -o dir_p mater..[ブランチ名]
たとえば
git format-patch -o p1 master..fix4 p1/0001-7.3.patch p1/0002-7.4.patch
こんな感じに出力されます。
次に、そのパッチを当てるのですが、当て方が2種類。
こちらも、ログ情報なども含めて自動的にコミットするか?
または、修正の内容だけを反映して、後で自分でコミットするか?
です。
パッチをあててコミットも自動で行う
git am [パッチファイル]
で先ほどの出力例を使って実行すると・・・
git am p1/0001-7.3.patch Applying: 7.3
修正の内容だけを反映する
git apply [パッチファイル]
git apply p1/0002-7.4.patch
これらの方法を使って、後で管理しやすいように修正の単位とログをきれいにできるので、
結構使うといいのではないでしょうか?

