最後のコミットを取り消すGitエイリアス
すべての変更をステージされた状態で保持しながら最新のコミットを取り消すgitエイリアスを作成。作業を失わない安全なコミット取り消し。
Workflow Aliases
詳細な説明
最後のコミットの安全な取り消し
undoエイリアスはソフトリセットを実行し、最後のコミットを削除しますが、すべての変更はステージングエリアに保持します:
[alias]
undo = reset --soft HEAD~1
リセットモードの比較
3つのリセットモードの理解は不可欠です:
| モード | コミット | ステージングエリア | ワーキングディレクトリ |
|---|---|---|---|
--soft |
削除 | 保持 | 保持 |
--mixed(デフォルト) |
削除 | クリア | 保持 |
--hard |
削除 | クリア | クリア |
--softモードはすべてを保持するため最も安全です。変更はステージされたまま残り、別のメッセージで再コミット、複数のコミットに分割、または追加の修正が可能です。
一般的なユースケース
コミットメッセージの修正:
git undo
git commit -m "より良いコミットメッセージ"
コミットを2つに分割:
git undo
git add src/auth/
git commit -m "認証モジュールの追加"
git add src/api/
git commit -m "APIエンドポイントの追加"
安全ネット
--hardリセットとは異なり、--softのundoは完全に非破壊的です。作業は失われません。気が変わった場合は、再度git commitを実行するだけで元のコミットが効果的に復元されます(新しいハッシュ付き)。
ユースケース
早すぎるコミット、コミットメッセージのタイプミス、含めるべきでないファイルの誤った含有、プッシュ前のコミット再構成の際に使用します。実際に最も頻繁に使用されるgitエイリアスの一つです。