reset, revert, rebaseの違いご存知ですか?
サクッとまとめました!
reset
- Gitリポジトリ内のコミット履歴やインデックスを変更するためのコマンド
- 特定のコミットまで戻したり、インデックスをクリアしたりする場合に使用する
- 作業ディレクトリやステージングエリアの状態を変更する
コマンド
git reset [--soft | --mixed | --hard] [commit]
--soft 活用例:直前のコミット内容を修正したい時に使う
--mixed 活用例:ステージしたものを取り消したい
--hard 活用例:ひとつ前のコミットまでまるごと消したい
お試し_soft → commitした状態からadd(ステージング)状態に戻す
お試し_mix → commitした状態から作業状態に戻す
お試し_hard → commitした状態から無に戻す
revert
- Gitで特定のコミットを取り消すために使用されるコマンド
- 過去のコミットを取り消し(履歴は残る)、その取り消しを新しいコミットとして履歴に追加する
- 履歴を安全に変更するために使用する
コマンド
git revert [commit]
コミットメッセージ編集
revert --edit叩いた後の画面遷移
rebase
- Gitの分岐を調整し、コミット履歴を整理するためのコマンド
- ブランチをベースにしている他のブランチの変更を取り込む
- コミットの履歴を綺麗に整理する
コマンド
git rebase [branch]
git pull との違い
- 履歴が直線的になり、読みやすくなる。
- マージコミットが生成されないため、履歴がクリーンになる。
- 自分の作業ブランチをクリーンに保ちたい場合。
- 共有ブランチや複数人での共同作業では、git pullがいいかも
参考
reset https://www.r-staffing.co.jp/engineer/entry/20191129_1
revert https://qiita.com/chihiro/items/2fa827d0eac98109e7ee
rebase https://zenn.dev/tana0102/articles/475d8952933af6