ログ日記

作業ログと日記とメモ

サブツリーマージのログ

まえに http://d.hatena.ne.jp/n314/20091217/1261018366 ここで書いた方法。

$ git checkout master
$ git merge --squash -s subtree --no-commit rack_branch

ここのマージは

$ git merge --squash -s subtree rack_branch

普通にsquashするとコミットされないのでno-commitなしでも良さそう。


しばらく使ってみて、頻繁にマージする場合は使い勝手が悪いと感じてきた。
共通の祖先がないわけだから、squashの後にcommitするときにログが全て拾われる。
コミットが多いブランチだと厳しい。


http://help.github.com/subtree-merge/
ここのやり方だと、明示的に歴史をマージしている。
どっちがいいんだろう。


subtreeコマンド http://github.com/apenwarr/git-subtree では

merge::
	Merge recent changes up to <commit> into the <prefix>
	subtree.  As with normal 'git merge', this doesn't
	remove your own local changes; it just merges those
	changes into the latest <commit>.  With '--squash',
	creates only one commit that contains all the changes,
	rather than merging in the entire history.
 
	If you use '--squash', the merge direction doesn't
	always have to be forward; you can use this command to
	go back in time from v2.5 to v2.4, for example.  If your
	merge introduces a conflict, you can resolve it in the
	usual ways.
git-subtree/git-subtree.txt at master · apenwarr/git-subtree · GitHub

デフォルトは通常のマージで、squashオプションもあるらしい。





個人的な理想は、前回の merge squash からのログを拾ってきてエディタの初期コメントに反映してほしいところ。