1. ホーム
  2. git

[解決済み] Git で、変更したファイルを古い(最終ではない)コミットに追加する方法

2022-03-16 04:01:20

質問

この1時間の間にいくつかのことを変更し、順次コミットしてきましたが、いくつかのコミット前に変更したファイルを追加するのを忘れていたことに今気づきました。

ログはこんな感じです。

GIT TidyUpRequests u:1 d:0> git log 
commit fc6734b6351f6c36a587dba6dbd9d5efa30c09ce 
Author: David Klein <> 
Date:   Tue Apr 27 09:43:55 2010 +0200

    The Main program now tests both Webservices at once

commit 8a2c6014c2b035e37aebd310a6393a1ecb39f463 
Author: David Klein <>
Date:   Tue Apr 27 09:43:27 2010 +0200

    ISBNDBQueryHandler now uses the XPath functions from XPath.fs too

commit 06a504e277fd98d97eed4dad22dfa5933d81451f 
Author: David Klein <> 
Date:   Tue Apr 27 09:30:34 2010 +0200

    AmazonQueryHandler now uses the XPath Helper functions defined in XPath.fs

commit a0865e28be35a3011d0b6091819ec32922dd2dd8 <--- changed file should go here
Author: David Klein <> 
Date:   Tue Apr 27 09:29:53 2010 +0200

    Factored out some common XPath Operations

何かアイデアはありますか?

解決方法は?

使用方法 git rebase . 具体的には

  1. 使用する git stash を使用して、追加したい変更点を保存します。
  2. 使用方法 git rebase -i HEAD~10 (または見たいコミット数)。
  3. 問題のコミットをマークする ( a0865... という単語を編集用に変更します。 pick に変更します。 edit . 他の行を削除するとコミットが削除されてしまうので、削除しないようにしましょう[^vimnote]。
  4. リベースファイルを保存すると、git はシェルに戻り、あなたがそのコミットを修正するのを待ちます。
  5. を使用して、stashをポップします。 git stash pop
  6. でファイルを追加します。 git add <file> .
  7. でコミットを修正します。 git commit --amend --no-edit .
  8. を行う。 git rebase --continue これは、あなたの残りのコミットを新しいものに書き換えるものです。
  9. 複数のコミットを編集するようマークしている場合は、手順2以降を繰り返してください。

[^vimnote] を参照してください。もしあなたが vim を打つ必要があります。 挿入 キーで編集し、次に エスケープ と入力します。 :wq をクリックしてファイルを保存し、エディタを終了し、変更を適用してください。また、以下の方法もあります。 使いやすい git commit エディタを設定する git config --global core.editor "nano" .