reset と revert の違い - kagomen/git-tutorial GitHub Wiki
- 主な用途
- 未pushのコミットを、特定のコミットまで取り消す(HEAD~0が最新のコミット。git reflogで確認可能)
- 特定のコミットのみ取り消したい場合は、revertかrebaseを使う
- 未pushのコミットを、特定のコミットまで取り消す(HEAD~0が最新のコミット。git reflogで確認可能)
- --soft: コミット履歴だけ取り消し
- --mixed(デフォルト): 作業内容だけ残す
- --hard: 作業内容もすべて取り消し
- 主な用途
- push済みのコミットを、変更前の内容で新しいコミットとして上書きする
- 通常フロー:
- git revert <コミットハッシュ>
- コミット編集画面が開くので編集
- git push
- コンフリクト発生時:
- git revert <コミットハッシュ>
- git status で状況確認
- コンフリクト解消
- git add <ファイル名>
- git revert --continue
- コミット編集画面が開くので編集
- git push
- revertを中止したい:
- git revert --abort
- rebase
- 履歴を変えるので、未pushのブランチに限る
- git rebase -i HEAD~5
- 取り消したいコミットをpick → dropに変更
pick a1b2c3d 1番目のコミット pick d4e5f6g 2番目のコミット pick h7i8j9k 3番目のコミット drop l1m2n3o 4番目のコミット pick p4q5r6s 5番目のコミット
- revert
- 前述を参考