Category:
Computer
git rebase -i で squash を使うとコミットを結合することができますが、リポジトリ内の最初のコミットは squash することができません。
現在のインデックスをそっくりそのまま "initial commit" だったことにする (つまり、リポジトリ内のコミットを "initial commit" だけの状態にする) 方法は以下の通り。
1. .git/HEAD をエディタで以下のように編集して、作業用ブランチ master2 をポイントする (master2 は既存のブランチ名と衝突しないように命名する)。
2. 最初のコミットをあらためて作成する。(作業用ブランチが作成される)
3. master ブランチを今のコミットで上書きしてから、作業用ブランチを削除する。
何度かやっているのに、いつも忘れてしまうのでメモ。
追記 (2014/04/12): git 1.7.2 以降では、git checkout --orphan というオプションが実装され、上記の操作は不要になりました。
現在のインデックスをそっくりそのまま "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 というオプションが実装され、上記の操作は不要になりました。
Comments