Git revertとresetの違いと使い方を初心者向けに解説
Gitのrevertとresetの違いや使い方を初心者にもわかりやすく解説。履歴を安全に戻す方法や、状況に応じた正しい選び方を丁寧に紹介します。
revertとresetの目的は「履歴を戻すこと」
Gitでは、誤った変更を元に戻したい場面がよくあります。そのときに使うのが
revert
と reset
。どちらも「履歴を戻す」コマンドですが、その挙動は大きく異なります。
基本的な違いのまとめ
項目 | git revert | git reset |
---|---|---|
目的 | 過去のコミットの取り消しを新たな履歴として記録 | 指定したコミット以降の履歴を削除・巻き戻す |
履歴の扱い | 履歴は残る(安全) | 履歴が書き換わる(注意が必要) |
チーム作業 | 安全に使用可能 | 原則ローカル専用(共有ブランチでは非推奨) |
git revertの使い方
コマンド構文
git revert [コミットID]
例:1つ前のコミットを取り消す
git revert HEAD
この操作は、取り消し用の新しいコミットを作成します。
特徴
- 履歴はそのまま残る
- 安全に操作できるので、チーム開発でも使いやすい
git resetの使い方と種類
基本コマンド
git reset [--soft | --mixed | --hard] [コミットID]
各オプションの違い
オプション | ステージ | 作業ディレクトリ | 説明 |
---|---|---|---|
--soft | 戻さない | 戻さない | コミットだけを取り消し、変更は残す |
--mixed(デフォルト) | 戻す | 戻さない | ステージは戻すが、作業ファイルはそのまま |
--hard | 戻す | 戻す | すべての変更を完全に取り消す(注意!) |
例:最新のコミットを完全に取り消す
git reset --hard HEAD~1
どちらを使うべき?状況別の使い分け
状況 | 推奨コマンド |
---|---|
チームと共有済みの履歴を取り消したい | git revert |
ローカルで試験的な変更を取り消したい | git reset --soft / --hard |
履歴をきれいに整えたい | git reset --soft |
注意点とベストプラクティス
は取り消しが効かないため慎重に!reset --hard
- チーム開発では
を優先して使用revert
- 操作前に
で履歴確認、必要ならgit log
で退避git stash
まとめ:revertとresetを正しく使い分けよう
Gitでの履歴の操作は非常に強力ですが、慎重さが求められます。
revert
と reset
の違いを理解し、状況に応じた使い分けをマスターすることで、より柔軟かつ安全な開発が実現します。
編集部