git reset –mixedでコミット履歴のリセットできる

最新コミット以外を消す手順(履歴のリセット)

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で数個にまとめる、タグで区切るなどの方法も検討できる。

コメント