#topicpath ---- ** コミットをまとめるための、Squashなマージ [#j5b04fae] #ref(squash01.png) たとえば dev_#10_spike というブランチで試行錯誤的にコミットを続けてて、キレイに決まった時にそれらを一つのコミットとして dev_#10 へ反映したい時があります。そんなときSquashなマージを使います。 $ git checkout dev_#10 Switched to branch 'dev_#10' $ git merge --squash dev_#10_spike Updating f1013a9..213629c Fast-forward Squash commit -- not updating HEAD file1.txt | 6 ++++++ 1 file changed, 6 insertions(+) #ref(squash02.png) Uncommitedな状態となるので最後にコミットします。 $ git commit -a [dev_#10 f17ada7] Squashed commit of the following: 1 file changed, 6 insertions(+) #ref(squash03.png) spikeはいらないので削除します。 $ git branch -d dev_#10_spike error: The branch 'dev_#10_spike' is not fully merged. If you are sure you want to delete it, run 'git branch -D dev_#10_spike'. $ git branch -D dev_#10_spike <- spike自体はコミットされてないので、-Dで強制削除。 Deleted branch dev_#10_spike (was 213629c). ちなみにこの例では、dev_#10にまとめてマージされた変更は dev にマージしてもらう想定。だがしかしdevブランチは誰かコミットしているようで、リビジョンが変更されています。 この場合は落ち着いて、dev_#10 に dev の修正をマージし((ココはrebaseが正しいかどうか要検討))、最後にdev_#10をdevへマージします。 $ git branch dev * dev_#10 master $ git merge dev Merge made by the 'recursive' strategy. file2.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 file2.txt $ git checkout dev Switched to branch 'dev' $ git merge dev_#10 Updating ac64ac5..a9f06e8 Fast-forward file1.txt | 6 ++++++ 1 file changed, 6 insertions(+) #ref(squash04.png) devブランチにdev_#10がマージされました。 **関連リンク [#f229281c] -[[7. merge --squash【チュートリアル3 コミットを書き換えよう!】 | サルでもわかるGit入門>http://www.backlog.jp/git-guide/stepup/stepup7_7.html]] ---- この記事は #vote(おもしろかった,そうでもない) #vote(おもしろかった[1],そうでもない[0]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}