Kenichi Maehashi's Blog
脳内コアダンプ

git: リポジトリ内の全コミットを 1 コミットに squash したい
Monday | June 3, 2013
git rebase -i で squash を使うとコミットを結合することができますが、リポジトリ内の最初のコミットは squash することができません。
現在のインデックスをそっくりそのまま "initial commit" だったことにする (つまり、リポジトリ内のコミットを "initial commit" だけの状態にする) 方法は以下の通り。

1. .git/HEAD をエディタで以下のように編集して、作業用ブランチ master2 をポイントする (master2 は既存のブランチ名と衝突しないように命名する)。
ref: refs/heads/master2

2. 最初のコミットをあらためて作成する。(作業用ブランチが作成される)
git commit -m "initial commit"

3. master ブランチを今のコミットで上書きしてから、作業用ブランチを削除する。
git branch -f master
git checkout master
git branch -d master2

何度かやっているのに、いつも忘れてしまうのでメモ。

追記 (2014/04/12): git 1.7.2 以降では、git checkout --orphan というオプションが実装され、上記の操作は不要になりました。
コメント (0)
コメント


<< 前ページ[1]

トップページに戻る
Copyright © 2006-2021 Kenichi Maehashi, All Rights Reserved.