トラブルシューティング
git commit --amend の注意点
--amend は便利だが push 済みコミットの修正は危険。安全な使い方を解説
--amend の基本
git commit --amend は直前のコミットを修正するコマンドです。
コミットメッセージの修正や、追加し忘れたファイルをコミットに含めるときに使います。
実際には「直前のコミットを置き換える新しいコミット」を作成するため、コミットハッシュが変わります。
bash
# コミットメッセージだけ修正
git commit --amend -m "正しいメッセージ"
# ファイルを追加してコミットに含める
git add forgotten-file.txt
git commit --amend --no-editpush 前なら安全
まだ push していないコミットに対する --amend は安全です。
ローカルの履歴だけが変わるため、他の人に影響しません。
作業中に「コミットメッセージを間違えた」「ファイルを追加し忘れた」という場合は気軽に使えます。
push 後の --amend が危険な理由
push 済みのコミットを --amend すると、リモートとローカルの履歴が食い違います。
通常の push は拒否されるため、git push --force が必要になります。
しかし、他のメンバーが元のコミットを基に作業していた場合、force push により相手の履歴が壊れます。
共有ブランチでの force push はチーム開発における重大なトラブルの原因です。
bash
# push 済みコミットを amend すると...
git commit --amend -m "修正メッセージ"
git push
# error: failed to push (リモートと不一致)
# force push が必要になるが、これは危険
git push --force # 他メンバーに影響する可能性ありpush 後の修正は revert を使う
push 済みのコミットを修正したい場合は、git revert で「取り消しコミット」を作成するのが安全です。
revert は履歴を書き換えず、新しいコミットとして変更を打ち消すため、他のメンバーに影響しません。
bash
# push 済みコミットを安全に取り消す
git revert HEAD
# 正しい内容でコミットし直す
git add .
git commit -m "正しい変更内容"
git push
Git Ready