104

変更をコミットしましたが、変更セットにファイルを追加するのを忘れました。他のコミットの後、ファイルがコミットから欠落していることに気付きましたHEAD^4

以前のコミットを書き直して、欠落しているファイルを含めるにはどうすればよいですか?

4

5 に答える 5

59

修正したいコミットのオプションを使用git rebase --interactive HEAD~4して設定します。edit

この方法でリモート リポジトリにプッシュされたコミットを変更しないでください。その場合は、ファイルが欠落している新しいコミットを追加することをお勧めします。


これをより明確にするために、最初に現在の変更を で隠しておきますgit stash。次に、git rebase --interactive HEAD~4. テキスト エディターで次のように取得します (降順で 5 つのコミットを取得することに注意してください)。

pick 123e123 fifth last commit message
pick 321e122 fourth last commit message
pick 1d23e3f third last commit message
pick 987a987 second last commit message
pick 8a8a8a8 last commit message

変更エントリのプレフィックスを からpickに変更しeditます。それedit 321e122 ...はOPのためでしょう。

git rebaseエントリを順番に調べます。変更するのは 1 つだけなので、変更するエントリは 1 つだけです。でファイルを追加しgit addgit commit --amendそれらの追加されたファイルで現在のコミットを修正します。

最後にgit rebase --continue、次のファイルに移動します。1つしかないので、リベースは完了です

于 2013-01-16T22:43:06.317 に答える
13

これらの 4 つのコミットをプッシュしていない場合は、次のように実行できます。

これらすべてのコミットのパッチ ファイルを作成します。

git format-patch -4

コミットを 4 つ巻き戻します。

git reset --hard HEAD~4

不足しているファイルを追加:

git add missing-file

でコミットし--amendます:

git commit --amend

保存したすべてのパッチを適用します。

git am *.patch

プッシュした場合は、このメソッドを使用しないでください。代わりに、失敗を認めて、この問題を修正する HEAD の上にもう 1 つコミットを作成してください。

于 2013-01-16T22:44:45.653 に答える