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

ぴっぴもんげ

在宅通信は、お金・時間・体力を余計に失わないために、生活の運用を記録するブログです。

夫婦2人・フルリモート・宮崎市・車なし生活を前提に、住まい、家計、道具、家事、移動、防災について、選んだ理由・かかった費用・失敗・使ってみた感想を残しています。

ぴっぴもんげをフォローする
PC・プログラミング余白

コメント