push 済みのコミット abc123 の変更を取り消したい。安全なのは?
正答
- git reset --hard abc123~1
- git commit --amend
- git revert abc123
- git checkout abc123
解説
git revert は指定コミットの変更を逆に適用する新しいコミットを作る。既存の履歴は変わらないので、通常の push でそのまま共有できる。reset --hard で履歴を巻き戻すとリモートと食い違い、強制 push が必要になって他の人の作業を壊す恐れがある。--amend は直前のコミットの修正にしか使えず、同じく履歴を書き換える。checkout でハッシュを指定すると detached HEAD で過去を見るだけで、取り消しにはならない。
参考: git-scm.com
この問題を含む Git のテストを制限時間つきで解く
Gitクイズへ