Gitでやらかして、過去の歴史を新しい歴史として作りたいとき
- Gitでコミット、プッシュしちゃってからやっちまった、ということに気づくことがままある。
- そんなとき、ググるとやっちまった歴史を消してプッシュすればいいという記事はよく見る
- でもそうするとチームでGit使ってたときに他の人の歴史を壊すことがあるのでしたくない。
- SVNみたいに、やっちまった歴史を残しつつ前の歴史を新しい歴史として作るにはどうしたらいいかわからなかったので無理やりやったのを記録しておく
- すごく無理やりなので他にいい方法が絶対あるはず・・・
やったこと
- やっちまった前のコミットを新しくcheckout
git clone リポジトリ
git checkout <やっちまう前のハッシュか何か>
- ディレクトリの.gitディレクトリ消す
rm -rf .git
- やっちまったリポジトリの.gitディレクトリ持ってくる
cp -r /path/to/やっちまった/.git ./
- git status
git status
- 新しい歴史としてコミット、プッシュ
git commit -m "やっちまう前の歴史を新しく追加"
git push
やっちまう前の.gitディレクトリをやっちまった.gitで上書きする、というだけ。
git上はやっちまった歴史になってるけどファイルたちはやっちまう前のものになってる。
きっと正しいやり方じゃないのであまり当てにしないほうがいいと思いますが
これでできてちょっと嬉しかったので書きました。