何度も忘れるのでメモ用に。
Commitしてしまったら
まず取り消す。
$ git commit -m "うわやっちゃったよこれもうどうすんだよ"
$ git reset HEAD~
git reset HEAD~
によってディスク上のファイルはすべてunstageされる(変更は残ったまま)
stageされたままでいいのなら、git reset --soft HEAD~
を使う。
Pushまで行ってしまっていたら
強引なやり方として、一つ前のcommitをforce pushする方法がある。
(もし、これよりも良い対処があったら教えてください)
$ git push -f [一つ前のcommitID]:[現在のブランチ名]
git stashを用いて別ブランチに変更を反映させる
commit前に行う。git stash
で一度変更を対比させ、ブランチ移動後にgit stash pop
で展開する。
$ git stash
$ git checkout [正しいブランチ]
$ git stash pop
Sources
https://stackoverflow.com/questions/1270514/undoing-a-git-push
https://stackoverflow.com/questions/927358/how-to-undo-the-most-recent-commits-in-git
https://stackoverflow.com/questions/7217894/moving-changed-files-to-another-branch-for-check-in/7218106