最新コミット以外を消す手順(履歴のリセット)
1. 初期コミットまでリセット(作業ツリーは残す)
git reset --mixed $(git rev-list --max-parents=0 HEAD)
–mixedにすると、ファイルの中身は保持されたままステージングだけ外れる。
–hardにするとファイルも消えるので注意。
2. すべての変更を1つのコミットにまとめる
git add .
git commit -m "Initial commit (reconstructed)"
3. フォースプッシュで履歴を上書きする
git push -f
注意点
他の人がそのリポジトリやブランチを使っている場合には、この履歴改変は協調作業に支障をきたすのでやらないor合意をとること。
GitHubなどに既に公開済みの場合、コミットへのリンク切れなどの副作用もある。
代替案:履歴を消したいだけなら
もし「履歴が多くて見づらい」程度の話であれば、無理にリセットせず、rebase -iで数個にまとめる、タグで区切るなどの方法も検討できる。
コメント