- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
** Squashなマージ [#j5b04fae]
** コミットをまとめるための、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
$ 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;}