過去 1 時間でいくつかの変更を行い、段階的にコミットしましたが、いくつかのコミット前に変更したファイルを追加するのを忘れていたことに気付きました (たとえば、a0865...
以下のようにマークされたコミット)。
ログは次のようになります。
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
何か案は?
ベストアンサー1
使用git rebase
。 具体的には:
git stash
追加したい変更を保存するために使用します。git rebase -i HEAD~10
(または、確認したいコミットの数だけ)を使用します。- 問題のコミット ( ) を編集対象としてマークするには、行の先頭の
a0865...
単語を に変更します。コミットが削除されてしまうので、他の行は削除しないでください。[^vimnote]pick
edit
- リベース ファイルを保存すると、git はシェルに戻り、そのコミットが修正されるまで待機します。
- を使用してスタッシュをポップします
git stash pop
。 - でファイルを追加します
git add <file>
。 - コミットを で修正します
git commit --amend --no-edit
。 git rebase --continue
残りのコミットを新しいコミットに書き換える を実行します。- 複数のコミットを編集対象としてマークした場合は、手順 2 以降を繰り返します。
--force
以前に変更されたコミットを他の場所にプッシュしている場合は、リモートで更新するために再度プッシュする必要があります。ただし、 の使用に関する通常の警告が--force
適用され、注意して事前に調整しないと、他の人の作業を簡単に失う可能性があります。
[^vimnote]: を使用している場合は、編集するためにキーvim
を押してInsertから、ファイルを保存するためにEsc入力し:wq
、エディタを終了して変更を適用する必要があります。または、ユーザーフレンドリーなgitコミットエディタを設定するとgit config --global core.editor "nano"
。