コンテンツにスキップ
GitTree
Git ガイド7 分で読みました

Git で最後のコミットを修正する方法 (メッセージ、ファイル、作成者、および元に戻す)

コミット メッセージでタイプミスを見つけた場合でも、ファイルのステージングを忘れた場合でも、シークレットを誤ってコミットした場合でも、間違った作成者のメールアドレスを使用した場合でも、git commit --amend はブランチを「タイプミス修正」コミットで混乱させることなく、チップ コミットをきれいに置き換えます。

作者 Kodmora

GitTree の背後にあるソフトウェア ハウス

発行済み 更新されました
  • コミット
  • ステージング
  • コミット履歴
  • 元に戻すと回復
  • リベース
このページでは

現在のブランチの最新のコミットを修正するには、git commit --amend を実行します。何もステージングされていない場合、Git はコミットを更新されたメッセージに置き換えます。最初に新しい変更をステージングすると、Git はそれらのステージングされた変更をコミットに組み込み、既存のメッセージを --no-edit で保持するか、所定の位置に書き換えることができます。視覚的なワークフローをお好みですか? macOS、Windows、および Linux の GitTree で、コミット パネルの 前のコミットの修正 をオンにして (または、グラフの一番上のコミットを右クリックして コミット メッセージの編集… を選択)、メッセージを事前入力し、個々の行をステージングまたはステージング解除し、プッシュされた履歴を書き換える前にリモート ブランチの警告を表示し、ワンクリックの 元に戻すでいつでも復元できます。

クイックリファレンス: すべての git commit --amend コマンド

最新のコミットの問題点に一致するコマンドを正確に選択してください。または、エッジ ケース、フック、署名付きコミット、および視覚的な代替案については、以下の詳細セクションに移動してください。

Git の最後のコミットを修正する一般的な方法、各コマンドで何が変更されるか、コミット SHA を書き換えるかどうか。
直したいこと実行するコマンドコミットはどうなるか
最後のコミットメッセージのタイプミスを修正(インライン)git commit --amend -m "New message"HEAD を、新しいメッセージと現在ステージングされている変更を含む新しいコミットに置き換えます。
エディタで複数行のコミットメッセージを編集するgit commit --amend既存の件名と本文が事前に入力された構成済みの Git エディターを開きます。
メッセージのみを書き換えます (ステージングされたファイルは無視します)git commit --amend --only -m "New message"次のコミットに向けて現在のステージング領域をそのままにして、HEAD のコミット メッセージを書き換えます
忘れたファイルを追加して同じメッセージを保持するgit add <file> && git commit --amend --no-editテキストエディタを開かずに、<file> を最後のコミットに折りたたみます
最後のコミットに特定の行またはハンクを追加するgit add -p && git commit --amend --no-edit選択したハンクをインタラクティブにステージングして、それらのハンクのみを HEAD に折りたたむことができます
変更されたすべての追跡ファイルを最後のコミットに折りたたむgit commit -a --amend --no-edit変更または削除されたすべての追跡ファイルをステージングし、1 ステップで HEAD を修正します (追跡されていないファイルは無視されます)
誤ってコミットしたファイルを削除する (ディスク上に保持する)git restore --source=HEAD~1 --staged <file> && git commit --amend --no-editローカルの作業ツリー ファイルをそのまま維持したまま、インデックス内の <file> を HEAD~1 に戻します
最後のコミットの作成者名とメールアドレスを修正git commit --amend --reset-author --no-edit現在の user.name および user.email の構成と一致するようにコミット作成者 (およびタイムスタンプ) を更新します。
プッシュされたコミットを修正した後にブランチを更新するgit push --force-with-lease --force-if-includesチームメイトが新しいコミットをプッシュしておらず、ローカルの reflog にリモート ヒントが含まれている場合にのみ、リモート ブランチを安全に更新します
誤った git commit --amend を元に戻すgit reset --soft HEAD@{1}追加の変更をステージングしたままにして、ブランチ ポインタを修正前のコミットに戻します。

git commit --amend が内部で実際に行うこと

すべての Git コミット ハッシュは、ルート ツリー スナップショット、親 コミット ハッシュ、作成者 名/電子メール/タイムスタンプ、コミッター 名/電子メール/タイムスタンプ、コミット メッセージ の 5 つのデータから計算された暗号化チェックサム (SHA-1 または SHA-256) です。メッセージ内の 1 文字でも、または 1 秒後のコミッターのタイムスタンプを変更すると、結果のハッシュはまったく異なります。

# Before git commit --amend:
A --- B --- C  <-- main (HEAD)

# After git commit --amend:
A --- B --- C' <-- main (HEAD)
       \
        C      (still in git reflog as HEAD@{1} until garbage collection)

git commit --amend を実行すると、Git は ステージング領域 (インデックス) に現在あるものをすべて取得し、それを C (B) の親ポインターと組み合わせて、新しいコミット オブジェクト C' を書き込み、C' を指すように現在のブランチ参照を更新します。元のコミット C はすぐには削除されません。ローカルの reflog (HEAD@{1}) に少なくとも 30 ~ 90 日間 (gc.reflogExpireUnreachable) 記録されたままになります。そのため、誤って修正した場合でも、git reflog または GitTree の 元に戻すとやり直し および 紛失と発見 ツールを使用して常にローカルで回復できます。

1.最後のコミットメッセージを変更する

コミットしたばかりで、タイプミス、間違った Jira/GitHub 問題番号、または Conventional Commits プレフィックス (feat:、fix:、chore:) の欠落にすぐに気づいた場合は、まず git status をチェックして、何かがステージングされているかどうかを確認してください。

-m を使用して、新しい 1 行または複数段落のメッセージを渡します

エディタを起動せずにターミナルからメッセージを直接置き換えるには、-m を渡します。複数の -m フラグを連結して件名と本文の段落を作成できます。

# Replace the commit subject inline
git commit --amend -m "fix(auth): validate refresh token expiry before rotation"

# Replace both the subject line and body paragraph
git commit --amend \
  -m "fix(auth): validate refresh token expiry before rotation" \
  -m "Prevents expired tokens from issuing a new session when clock skew exceeds 30s."

テキストエディタで既存のメッセージを編集します

コミットに既に詳細な複数行の説明、トレーラー (Co-authored-by:、Signed-off-by:)、または再入力したくない問題の参照が含まれている場合は、-m を指定せずに git commit --amend を実行します。

git commit --amend

Git は、現在のコミット メッセージがプリロードされた状態で、構成済みの core.editor (Vim、Nano、VS Code、Zed など) を開きます。ファイルを保存して閉じて、修正されたコミットを書き込みます。エディターを開いている間に気が変わった場合は、コミット メッセージ全体を削除して (ファイルを空のままにし)、保存します。Git は Aborting commit due to empty commit message で修正を中止し、HEAD はそのまま残します。

2.忘れられたファイルまたは特定の行を最後のコミットに追加します

開発者が --amend に到達する最も一般的な理由は、コミットする前に 1 つのファイルの保存、テスト フィクスチャのステージング、またはフォーマッタの実行を忘れることです。最初に不足している変更をステージングし、次に --no-edit で修正することで、Git がエディターを開かずに既存のコミット メッセージを保持します。

# Stage the forgotten file (or files)
git add src/auth/token-validator.test.ts

# Fold the staged file into the last commit and keep the existing message
git commit --amend --no-edit

修正する前に特定の行またはハンクのみをステージングする

作業ツリーに、前のコミットに属する 3 行の修正と * 40 行のデバッグ ログまたは次の機能の作業の両方が含まれている場合はどうなるでしょうか? git add . または git commit -a --amend を実行しないでください。代わりに、パッチ モードを使用して、前のコミットに属する正確なハンクまたは行のみをステージングします (git add -p とステージング特定行のガイド で詳しく説明されています)。

# Choose y/n/s (split) for each changed hunk
git add -p src/auth/token-validator.ts

# Verify what is staged vs what stays in the working tree
git diff --staged

# Amend the last commit with only the staged hunks
git commit --amend --no-edit

GitTree では、これを行うためにターミナル ハンクの分割 (s、e) と格闘する必要はありません。ステージングされていない変更 内の任意のファイルをクリックし、正確な行を選択するか、サイドバイサイドまたはインラインの差分で Stage Hunk をクリックし、前のコミットの修正 を切り替えます。 Git diff ガイド を参照して、ステージングされた差分とステージングされていない差分を検査することで、修正されたコミットに誤ってコードが紛れ込むことをどのように防ぐかを確認してください。

個別のハンクと行を GitTree にステージングしてから、それらを commit にまとめることで、無関係な作業をステージング解除したままにします。
個別のハンクと行を GitTree にステージングしてから、それらを commit にまとめることで、無関係な作業をステージング解除したままにします。GitTree はデモ リポジトリとのインターフェイスです。

3. 誤ってコミットしたファイルを削除します (ディスクから削除せずに)

git add . を実行し、誤って .env.local ファイル、大規模なビルド アーティファクト、または別の pull リクエストに属するファイルをコミットしたとします。 HEAD からファイルを削除する方法は、ファイルが HEAD (HEAD~1) より前のコミットに存在していたのか、または HEAD に新しく追加されたのかによって異なります。

ケース A: 新しく追加されたファイルを最後のコミットから削除する (ローカル ファイルを保持する)

git rm --cached を使用して、物理ファイルをディスク上に残したままステージング インデックスからファイルを削除し、次のように修正します。

# Remove the file from the index only (leaves the file on disk)
git rm --cached .env.local

# Optional: add it to .gitignore so it never gets staged again
echo ".env.local" >> .gitignore
git add .gitignore

# Rewrite the last commit without .env.local
git commit --amend --no-edit

ケース B: 最後のコミットで追跡されたファイルへの編集を元に戻す (ローカル編集を保持する)

<file> がすでに HEAD~1 で追跡されており、その編集内容を誤って HEAD に含めた場合は、git rm --cached を使用しないでください (ファイルの削除が HEAD に記録されることになります!)。代わりに、そのファイルのインデックス エントリを HEAD~1 から復元します。

# Reset only the staged index state of <file> back to HEAD~1
git restore --source=HEAD~1 --staged src/config/database.ts

# Amend HEAD: the commit no longer touches database.ts, and your local edits stay in the working tree
git commit --amend --no-edit

不要なローカル編集を破棄したり、追跡されていないファイルを完全に消去したい場合は、Git で変更を破棄し、追跡されていないファイルを消去する方法 と Git で削除されたファイルを復元する方法 を参照してください。

4. 最後のコミットの作成者、電子メール、またはタイムスタンプを変更する

user.email を設定する前に新しいラップトップでコミットするか、個人用の GitHub メールがグローバルに構成されているときに作業リポジトリ内でコミットすると、コミットによって間違った ID が記録されます。 git commit --amend は、ファイルに一切触れずにコミットのメタデータを書き換えることができます。

# Option 1: Set an explicit author name and email on the last commit
git commit --amend --author="Jane Doe <jane@company.com>" --no-edit

# Option 2: Update git config first, then reset the commit author to match
git config user.name "Jane Doe"
git config user.email "jane@company.com"
git commit --amend --reset-author --no-edit

# Option 3: Amend the author date as well
git commit --amend --date="2026-11-11T14:30:00+02:00" --no-edit

5. すでにプッシュしたコミットを安全に修正する方法

すでに origin にプッシュされているコミットを修正すると、ローカル ブランチとリモート追跡ブランチ (origin/<branch>) 分岐: ローカル ブランチには C' がありますが、origin にはまだ C があります。どちらのコミットも親 B を共有します。

ブランチが 独自の機能またはプルリクエスト ブランチの場合は、--force-with-lease (Git 2.30 以降では --force-if-includes) を使用してリモートを安全に更新します。

# Safely replace the remote branch tip with your amended commit
git push --force-with-lease --force-if-includes origin HEAD
  • `--force` ではなく `--force-with-lease` を使用する理由: プレーンの git push --force はリモート ブランチを盲目的に上書きし、最後のフェッチ以降にチームメイトまたは CI ボットがプッシュしたコミットをすべて消去します。 --force-with-lease は、origin/<branch> がローカルのリモート追跡参照に保存されている正確なコミット SHA をまだ指していることを確認します。その間に他の誰かがプッシュした場合、Git はその作業を失う代わりにプッシュを拒否します。
  • `--force-if-includes` の追加内容: バックグラウンドの自動取得が有効になっている場合、プッシュする前にリモート追跡参照が更新される可能性があります。 --force-if-includes は、書き換えを許可する前に、リモート ブランチの先端のコミットが実際にローカル reflog に統合されたことを検証します。
  • `main` または共有ブランチを使用している場合: 他の開発者が作業の基礎としている共有ブランチを修正したり強制プッシュしたりしないでください。代わりに、コミットをそのままにして新しい修正コミットをプッシュするか、git revert で完全に取り消します (コミットとマージを元に戻すガイド と プッシュされたミスを回復するチュートリアル を参照してください)。
  • 最初に追跡ブランチを設定する必要がありますか? Git でアップストリーム ブランチを設定する方法 を参照してください。

6. 修正する必要があるコミットが最後のコミットではない場合はどうすればよいですか?

git commit --amend は HEAD (チップコミット) のみを書き換えます。タイプミスまたは欠落した変更が HEAD~2 または 3 つのコミットに属する場合、手動で隠したりチェリーピッキングしたりすることなく、クリーンなオプションが 2 つあります。

オプション 1: git commit --fixup を使用した高速 CLI 自動スカッシュ

修正をステージングし、古いコミットの SHA を対象とする --fixup コミットを作成し (またはメッセージを編集する場合は --fixup=amend:<sha>)、git rebase -i --autosquash を実行します。

# 1. Stage the changes meant for the older commit (e.g. a1b2c3d)
git add src/api/client.ts

# 2. Create a fixup commit targeting a1b2c3d
git commit --fixup=a1b2c3d

# 3. Autosquash the fixup commit straight into a1b2c3d
GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash a1b2c3d~1

オプション 2: GitTree での視覚的な対話型リベース

ターミナルで SHA をコピーしてリベース Todo ファイルを編集する代わりに、完全な インタラクティブ リベース GUI ガイド と ブランチ リベース ガイド をお読みください。 GitTree の インタラクティブ リベース および リワード、スカッシュ アンド ドロップ プランナーで、グラフ内の古いコミットを右クリックし、ここからインタラクティブ リベース… を選択し、そのコミットを リワードに切り替えるか、修正コミットを修正/スカッシュにドラッグして、ワンクリックで適用します。

GitTree のインタラクティブ リベース ダイアログで、古いコミットを視覚的に言い換え、潰し、並べ替えます。
GitTree のインタラクティブ リベース ダイアログで、古いコミットを視覚的に言い換え、潰し、並べ替えます。GitTree はデモ リポジトリとのインターフェイスです。

7. 誤って git commit --amend を元に戻す方法

意図しないファイルがステージングされている間に git commit --amend を実行しましたか? それとも必要なコミット メッセージを誤って上書きしましたか? Git は HEAD のすべての動きをローカル reflog に記録するため、修正前のコミットはまだ HEAD@{1} に安全に保管されています。

# 1. Inspect the reflog to see the amend and the commit before it
git reflog -n 5
# e9f8d7c (HEAD -> feature) HEAD@{0}: commit (amend): feat: add billing webhook
# 4a3b2c1 HEAD@{1}: commit: feat: add billing webhook

# 2. Restore the branch to the pre-amend commit and keep any extra changes staged
git reset --soft HEAD@{1}

git reset --soft HEAD@{1} を使用すると、ブランチ ポインタが元のコミット (4a3b2c1) に戻り、修正されたコミットとインデックスにステージングされた元のコミットの差が残ります。作業ツリー内の何も失われません。 soft、mixed、および hard のリセットと reflog のリカバリについて詳しくは、Gitリセット --soft vs --mixed vs --hard、reflog を使用して git リセット、リベース、またはコミットを元に戻す方法、および 削除されたスタッシュと未解決のコミットを回復する方法 を参照してください。

git commit --amend を使用する場合と、reset、revert、または rebase -i を使用する場合

履歴を修正する必要があるときは常にこの決定マトリックスを使用して、コミットの位置とチームメイトがそれをプルしたかどうかに一致するコマンドを選択します。

git commit --amend、git replace --soft、git rebase -i、git revert のいずれかを選択します。
指示ターゲットコミットSHAを書き換える?以下の場合に最適です
git commit --amend最新のコミット (HEAD) のみはい最新のコミットメッセージを言い換えたり、忘れられていた段階的な変更を組み込んだり、ローカルまたは個人ブランチ上の作成者のメタデータを修正したい場合
git reset --soft HEAD~1最新のコミット (HEAD)はいすべての変更をステージングしたままにして、HEAD のコミットを完全に解除して、変更を 2 つ以上の個別のコミットに分割したいと考えています。
git rebase -i <base>範囲内の任意のコミットはいPR をマージする前に、HEAD よりも古いコミットを編集、言い換え、スカッシュ、修正、並べ替え、または削除する必要があります
git revert <sha>任意のコミット(HEAD 以降)いいえ (新しいコミットを追加します)コミットはすでに main または共有ブランチにあり、強制プッシュがブロックされているか、チームメイトの混乱を招く可能性があります

GitTree の最後のコミットを修正する方法 (ステップバイステップ)

  1. 変更を開いてステージングされた差分を検査します

    macOS、Windows、および Linux の GitTree で、サイドバーの 変更 を開きます。最後のコミットのメッセージのみを編集したい場合は、段階的な変更 を空のままにしておきます。忘れてしまったファイルまたは特定の行を折り込みたい場合は、それらのファイル、ハンク、または行のみを並列 diff にステージングします。

  2. 「前のコミットの修正」をオンにする (1)

    コミット メッセージ ボックスの上にある [前のコミットを修正] をオンにします (または、macOS では Cmd+Shift+M、Windows および Linux では Ctrl+Shift+M を押します)。メッセージ ボックスが空の場合、GitTree は HEAD からの概要と説明を事前に入力します。また、HEAD がすでにリモートにプッシュされている場合、履歴を書き換える前に、GitTree は明示的な警告バナーを表示します。

  3. メッセージ (または AI による下書き) を調整し、「コミットの修正 (2)」をクリックします。

    件名または本文を編集します。または、GitTree Pro のスパークル ボタンをクリックして、Nour および独自のコーディング エージェント CLI (Claude Code、Codex、または Gemini CLI) に、完全に修正された差分から更新されたコミット メッセージをドラフトさせます。その後、[コミットの修正] をクリックします。

  4. ワンクリックで元に戻すか、強制プッシュで安全にプッシュします (リースあり)

    気が変わりましたか?上部のツールバー(Cmd+Z / Ctrl+Z)の 元に戻す をクリックして、GitTree の refs/ogt/trash 安全スナップショットから元の修正前の commit を復元するか、紛失物確認でいつでも古い commit を検査します。コミットがすでにリモート機能ブランチにある場合は、ツールバーから Force Push (With Lease)… を使用します。

GitTree のコミット フォーム: (1) [前のコミットを修正] スイッチと (2) [コミットを修正] ボタン。
GitTree のコミット フォーム: (1) [前のコミットを修正] スイッチと (2) [コミットを修正] ボタン。GitTree はデモ リポジトリとのインターフェイスです。
GitTree で前のコミットの修正をオンにし、コミットの概要を更新し、ワンクリックでチップコミットを置き換えます。
GitTree で前のコミットの修正をオンにし、コミットの概要を更新し、ワンクリックでチップコミットを置き換えます。GitTree はデモ リポジトリとのインターフェイスです。

GitTree がよくある git commit --amend の間違いをすべて排除する方法

コマンドラインによる修正事故のほとんどは、手遅れになるまでターミナルが 3 つの重要なコンテキスト部分を隠すために発生します。つまり、ステージング領域にすでに存在するもの、HEAD がすでに origin にプッシュされているかどうか、上書きする前のコミット SHA の内容です。 GitTree は、これらの各障害モードをインターフェースで直接解決します。

  • ステージングされたファイルとステージングされていないライブの差分検査: [コミットの修正] をクリックする前に、ステージングされた変更 リストがコミット ボックスのすぐ上に表示されるため、中途半端なファイルを誤って HEAD に折りたたむことがなくなります。ワンクリックで個々のライン、ハンク、ファイルをステージングまたはステージング解除できます (ファイル、ハンク、ラインのステージング)。
  • プッシュされたコミットの検出とリース付き強制プッシュ保護: HEAD がすでにリモート ブランチ上にある場合、GitTree は修正する前にコミット パネル内で警告を発し、ワークフローを 強制プッシュ (リース付き)… と組み合わせて、チームメイトのプッシュが上書きされないようにします。
  • 右クリックによる書き換えと `fixup!` / `amend!` のクイック作成: ステージングされたファイルに手を加えずに HEAD を書き換えたいですか? コミット グラフ の一番上のコミットを右クリックし、コミット メッセージの編集… を選択します。古いコミットを修正する必要がありますか?グラフ内の古いコミットを右クリックして、fixup! または amend! コミットを作成するか、対話型リベース を開きます。
  • 自動安全スナップショット (`refs/ogt/trash`) とワンクリックで元に戻す: コミットの修正、対話型リベース、リセット、ブランチ削除、破棄を含む 19 の履歴変更操作を実行する前に、GitTree は refs/ogt/trash にローカル スナップショットを記録します。 元に戻す (Cmd+Z / Ctrl+Z) をクリックすると、修正前の正確なコミットとステージングの状態がすぐに復元されます。
  • ビジュアル遺失物と組み込みターミナル: 組み込みターミナル または数週間前に修正した場合でも、遺失物 は到達不能なコミットを表示し、完全な差分で置き換えられるため、生の git reflog 出力を解析せずにコミットを復元、チェリーピック、または分岐できます。
  • Git フック、シークレット警告、AI コミット メッセージ: GitTree はリポジトリの pre-commit と commit-msg Git フック を実行し、偶発的な API キーがないかステージングされた差分をチェックし、(GitTree Pro では) 独自のローカル コーディング エージェントを使用して Nour に正確なコミット メッセージを生成させます。
段階的な変更を検査し、コミットを作成または修正する前に、GitTree で明確なコミット メッセージを作成します。
段階的な変更を検査し、コミットを作成または修正する前に、GitTree で明確なコミット メッセージを作成します。
GitTree グラフ内のコミットを右クリックすると、コミット メッセージの編集…、対話型リベース、リセット、チェリーピック、および元に戻すにすぐにアクセスできます。
GitTree グラフ内のコミットを右クリックすると、コミット メッセージの編集…、対話型リベース、リセット、チェリーピック、および元に戻すにすぐにアクセスできます。
GitTree ツールバーの [元に戻す] ボタンと [やり直し] ボタンを使用すると、修正されたコミット、リセット、またはリベースを 1 回のクリックで元に戻すことができます。
GitTree ツールバーの [元に戻す] ボタンと [やり直し] ボタンを使用すると、修正されたコミット、リセット、またはリベースを 1 回のクリックで元に戻すことができます。GitTree はデモ リポジトリとのインターフェイスです。
GitTree の Lost & Found ビューには、未解決のコミットと置換されたコミットが完全な差分とともにリストされるため、修正前のスナップショットを視覚的に復元できます。
GitTree の Lost & Found ビューには、未解決のコミットと置換されたコミットが完全な差分とともにリストされるため、修正前のスナップショットを視覚的に復元できます。

よくある質問

git commit --amend はコミット SHA ハッシュを変更しますか?

はい。 Git コミットは不変であるため、git commit --amend は、置き換えられるコミットと同じ親を共有する新しい SHA-1 (または SHA-256) ハッシュを持つ新しいコミット オブジェクトを作成し、ブランチ ポインタを新しいコミットに移動します。置換されたコミットは、Git ガベージ コレクションの有効期限が切れるまで、到達不能なオブジェクトがローカルの git reflog (HEAD@{1}) に残ります。

コミットメッセージを変更せずに最後のコミットを修正するにはどうすればよいですか?

git add <file> (または git add -p) を使用して追加の変更をステージングしてから、git commit --amend --no-edit を実行します。 --no-edit フラグは、テキスト エディタを開かずに HEAD からの既存のコミット メッセージを再利用するように Git に指示します。 GitTree で 前のコミットの修正 をオンにすると、前のコミットの概要と説明が自動的に入力されるため、すぐに [コミットの修正] をクリックできます。

すでに他のファイルがステージングされている場合に、最後のコミット メッセージのみを変更するにはどうすればよいですか?

git commit --amend --only -m "New commit message" (または git commit --amend -o) を実行します。 --only フラグは、HEAD にすでに記録されているファイル ツリーのみを使用して HEAD を修正するように Git に指示し、現在ステージングされているファイルは次のコミットのインデックスにそのまま残します。 GitTree では、グラフの一番上のコミットを右クリックして、コミット メッセージの編集… を選択することもできます。

コミットをすでに GitHub、GitLab、または Bitbucket にプッシュした後に修正できますか?

はい、独自の機能ブランチの場合: ローカルでコミットを修正してから git push --force-with-lease --force-if-includes を実行します (または、GitTree で Force Push (With Lease)… を使用します)。これにより、他の誰も新しいコミットをプッシュしていない場合にのみ Git がリモート ブランチを更新します。プッシュされたコミットを修正した後に git pull を実行しないでください。また、main のような共有ブランチ上のコミットを修正することは避けてください。代わりに git revert を使用してください。

コンピューターからファイルを削除せずに、最後のコミットからファイルを削除するにはどうすればよいですか?

ファイルが最後のコミットで新しく追加された場合は、git rm --cached <file> に続いて git commit --amend --no-edit を実行します。ファイルがすでに HEAD~1 に存在しており、HEAD で行われた編集のみを削除したい場合は、git restore --source=HEAD~1 --staged <file> を実行してから git commit --amend --no-edit を実行します。どちらのコマンドも、ローカル ファイルを作業ツリーにそのまま保持します。

間違いを犯した場合、git commit --amend を元に戻すにはどうすればよいですか?

ターミナルで git reset --soft HEAD@{1} を実行します。これにより、新しく追加された変更がステージングされた状態のままで、ブランチ ポインタが修正の直前に指されていた正確なコミット HEAD に戻ります。 GitTree で、ツールバーの 元に戻す (macOS の Cmd+Z、または Windows および Linux の Ctrl+Z) をクリックするか、紛失物発見 を開いて修正前のコミットを復元します。

git commit --amend は pre-commit フックと commit-msg フックを実行しますか、それとも GPG/SSH 署名を保持しますか?

はい - git commit --amend は、通常の commit と同じように pre-commit フックと commit-msg フックの両方をトリガーします (必要に応じて、--no-verify / -n を渡してそれらをバイパスします)。修正すると新しいコミット オブジェクトが作成されるため、元のコミットの GPG または SSH 署名は置き換えられます。 Git または GitTree 設定 › コミット署名で commit.gpgsign を有効にしている場合、Git は修正されたコミットに自動的に再署名します。

履歴から 2 つまたは 3 つ前のコミットを修正するにはどうすればよいですか?

git commit --amend は HEAD のみを編集します。 CLI から古いコミットを修正するには、修正をステージングし、git commit --fixup=<sha> (または --fixup=amend:<sha>) を実行して、git rebase -i --autosquash <sha>~1 を実行します。 GitTree で、コミット グラフ内の古いコミットを右クリックし、ここからインタラクティブ リベース… を選択して、視覚的に書き換え、編集、または潰します。

情報源

他の製品に関する申し立ては、2026年11月11日 の公式ページと照合して確認されました。価格と機能は変更されます。ベンダーのページが真実の情報源です。