[GitHub 100日チャレンジ] Day 61 - Git Resetの基本
git resetのsoft、mixed、hardの違いを整理し、ローカルのコミットを安全に戻す考え方を学びます。
[GitHub 100日チャレンジ] Day 61 - Git Resetの基本
git resetとは
git resetは、現在のブランチやHEADを指定したコミットへ動かす命令です。コミットを作り直したいとき、stageを外したいとき、ローカルの試行錯誤を戻したいときに使います。
ただし強い命令なので、どの領域を戻すのかを理解してから実行する必要があります。
3つのモード
| オプション | コミット | Staging Area | Working Directory |
|---|---|---|---|
--soft | 戻す | 残す | 残す |
--mixed | 戻す | 外す | 残す |
--hard | 戻す | 外す | 消す |
--mixedはデフォルトです。
1
2
3
git reset --soft HEAD~1
git reset HEAD~1
git reset --hard HEAD~1
使い分け
- コミットメッセージを直したい:
--soft - stageしたファイルを選び直したい:
--mixed - ローカルの変更を完全に捨てたい:
--hard
--hardは未コミットの変更も消します。実行前に git status と git diff を確認しましょう。
共有済みコミットには注意
すでにpushしたコミットをresetで消してforce pushすると、他の人の履歴と衝突します。共有ブランチでは基本的に git revert を使います。
今日のゴール
resetは「履歴の位置」と「作業領域」を動かす命令です。soft、mixed、hardの違いを説明できるようにしましょう。
この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。
