Top / GitHub / コミットをまとめる

コミットをまとめるための、Squashなマージ

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(+)
squash02.png

Uncommitedな状態となるので最後にコミットします。

$ git commit -a
[dev_#10 f17ada7] Squashed commit of the following:
 1 file changed, 6 insertions(+)
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 の修正をマージし*1、最後に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(+)
squash04.png

devブランチにdev_#10がマージされました。

関連リンク


この記事は

選択肢 投票
おもしろかった 1  
そうでもない 0  

Top / GitHub / コミットをまとめる

現在のアクセス:2502


*1 ココはrebaseが正しいかどうか要検討

添付ファイル: filesquash04.png 623件 [詳細] filesquash03.png 617件 [詳細] filesquash02.png 632件 [詳細] filesquash01.png 532件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-11-01 (水) 13:46:32 (2361d)