Gitで直前のコミットの内容やメッセージを修正し、そのコミット自体を上書きできる git commit のオプションはどれですか?
1〜4キーで選択、Enterで回答できます
解説
正解は「git commit --amend」です。直前のコミットを、現在のステージ(次のコミットに含める変更を登録しておく領域)の内容と新しいメッセージで作り直し、元のコミットと置き換えます。git commit --amend の基本的な使い方コミットメッセージの誤字修正や、ファイルの追加し忘れを直すときに使います。git add forgotten.txt # 追加し忘れたファイルをステージする git commit --amend -m "ログイン画面を追加" # 直前のコミットを置き換える git commit --amend --no-edit # メッセージはそのままで内容だけ修正する 見た目は「修正」ですが、内部的には新しいコミットが作られ、古いコミットは履歴から外れるという動きをします。ほかのオプションとの違い「git commit --edit」は、エディタでメッセージを編集してからコミットするオプションです。新しいコミットが追加されるだけで、直前のコミットは変わりません。「git commit --fixup」は、指定したコミットを修正するための「fixup!」付きのコミットを新たに作ります。あとで git rebase -i --autosquash を実行して初めて元のコミットに統合されます。「git commit --reuse-message」は、既存コミットのメッセージを再利用して新しいコミットを作るオプションで、上書きはしません。プッシュ済みのコミットを amend するとリモートと食い違うamend するとコミットのハッシュ値(コミットを識別するID)が変わります。そのため、すでにリモートへプッシュしたコミットを amend すると通常の git push は拒否され、強制プッシュが必要になります。共有ブランチで強制プッシュすると他の人の作業を壊すおそれがあるため、amend はプッシュ前のコミットに限るのが安全です。やむを得ず強制プッシュする場合は、git push --force-with-lease を使うと、他の人が追加した更新を誤って消してしまう事故を防げます。参考Git - 作業のやり直し(Pro Git 日本語版)Git - git-commit Documentation