Git School · FluxGit

Git amend:ステージ内容を確認して直前のコミットを修正

FluxGit ·

各ブロックは別のケースであり、一括実行するスクリプトではありません。自分のリポジトリに合うケースを選び、ブランチ名、パス、VERIFIED_COMMITを置き換えてください。中止コマンドは対応する進行中の操作だけに使い、両方の選択肢を実行しないでください。

要点

commit --amendは現在の先端を新しいコミットに置き換え、元オブジェクトを編集しません。ローカルの直前コミットのメッセージや内容を、ステージ状態を確認して修正します。すでに共有済みなら、追加の修正コミットの方が履歴の書き換えより調整しやすいことが多いです。

例と前提条件

例はメッセージの誤字とsrc/parser.jsの変更漏れがある通常のローカルコミットです。メッセージだけと内容も変える修正は別です。過去のコミット、最初のコミット、merge向けではありません。実際のファイルとメッセージに置き換え、現在の先端を対象にします。

変更前に状態を確認する

status、最後のコミット、diff --cachedを確認します。通常のamendはインデックスを使うため、別タスクのステージ済みファイルが混入し得ます。未ステージの変更も確認して対象外を把握します。ID変更前に、元がpush済み、merge済み、他の人の作業基点ではないか確かめます。

git status --short
git log -1 --oneline
git diff --cached
git diff

参照または別のチェックアウトを保つ

HEADにrescue/before-amendを作り、元のコミットを比較可能に保ちます。全ローカルファイルの保存ではないため、必要な編集は別に保管します。reflogは保持中の古い参照を特定できる場合がありますが、永久的なオブジェクト保存や未コミット編集のバックアップではありません。

git branch rescue/before-amend HEAD

最初の手順

メッセージのみなら、パスなしの--amend --onlyで既存のステージ変更を除外できます。-mは修正メッセージです。後でコミットとインデックスを確認し、元のステージ作業が別コミット用に残っているか見ます。インデックスも含めるのは、同じamendでも別の手順です。

git commit --amend --only -m "Fix parser error message"
git diff --cached

別の結果を意図して選ぶ

入れ忘れたファイルなら、対象パスをステージし、インデックス全体の差分を読み、--amend --no-editでメッセージを保ちます。他のステージ済みファイルも明示的に除かなければ入ります。必要なチェックを実行します。hunkを選んでも統合されたコミットの正しさまで保証されません。

git add -- src/parser.js
git diff --cached
git commit --amend --no-edit

制限と例外

共有済み先端には新しい修正コミットを優先します。書き換えた先端の公開は調整を要し、保護ブランチでは禁止される場合があります。このガイドに一般的なforce pushコマンドはありません。許可された書き換えは、チームのlease、ブランチ、共同作業者確認の別手順で扱います。

git add -- src/parser.js
git diff --cached
git commit -m "Correct parser handling"

競合と後片付け

amendには通常、独自の競合続行手順はありません。hook失敗やコミット拒否ならメッセージと状態を読み、reset --hardを自動実行しません。誤った内容ならrescue/before-amendと先に比較します。修正reset前にはローカル編集のコピーを確認してください。

結果を確認する

元と新しいコミットのファイルとメッセージを比較します。IDの違いは正常です。メッセージのみならツリーは同じ、内容修正なら意図した差分だけが違うはずです。残ったステージ作業も確認し、レビュー済み置換が必要な履歴に保たれるまでは救出参照を残します。

git show --stat HEAD
git diff rescue/before-amend HEAD
git status --short

よくある質問

no-editは内容変更を止めません。メッセージを保つだけで、ステージ内容は反映されます。古いコミットを直接amendすることはできず、別の履歴編集が必要です。push後なら明示的な共有履歴方針に従い、追加修正コミットも検討してください。

FluxGitで操作を確認する

FluxGitの履歴と差分の表示で、操作と関連コミットを確認してください。この例のブランチ、共有履歴、ローカルファイルのチェックは維持します。現在利用できるビルドと対応プラットフォームはダウンロードページで確認できます。

Git公式ドキュメント

関連する手順

FluxGitをダウンロード