2

2つのコミットの前に、私は誤って無料の画像を法律で保護されている画像に変更しました(まあ、その画像を配布することは許可されていません)。まだgithubにプッシュしていません。画像に加えられたこれらの変更を元に戻して、コミット履歴に表示されないようにするにはどうすればよいですか?この絵は決して変わらなかったかのように。

4

3 に答える 3

5

を使用しgit rebase -i HEAD~2ます。何をしたいのかを尋ねられたら、変更する必要があるコミットについて、「選択」を「編集」に置き換えます。これにより、指定したコミットを編集できるようになります。つまり、メッセージだけでなく、コミット全体を編集できます。

(または、そのコミットがまったく必要ない場合は、不適切なコミットを含む行を削除するだけです。リベースは終了し、コミットが発生しないようにします。その場合、この残りを読む必要はありません。 )

(使用しているエディターを保存して終了することにより) リベースを開始すると、次のようなプロンプトが表示されます。

Stopeed at 98ad8ac... Add an image I really oughtn't add.
You can amend the commit now, with

        git commit --amend

Once you are satisfied with your changes, run

        git rebase --continue

だから正確にそれをしてください!コミットに必要な変更を加えて (つまり、フリーではないイメージを削除し、フリーのイメージを元に戻す)、実行しgit commit --amendます。これにより、悪いコミットが新しいコミットに置き換えられます。

(別の方法:git reset HEAD^この時点で実行します。これにより、コミットが発生しなかったかのようになりますが、コミットからのすべての変更が作業コピーに保存されるため、必要に応じてステージング/バックアウト/変更を行うことができます。その後git commit、通常通り実行してください。)

次に を実行するgit rebase --continueと、Git は最初のコミットの上に 2 番目のコミットを適用し、履歴にはダフの修正ではなく、正しい修正のみが含まれます。

于 2012-08-16T18:51:47.397 に答える
1

git commit --amendあなたの友だちです。

履歴をさらに変更する必要がある場合は、そこにありgit rebase --interactiveます。

于 2012-08-16T18:33:28.300 に答える
-1

できますがgit revert <commit>、それでも履歴に表示されます。

プッシュされていない場合は、git reset --hard <commit>コミットを 2 回前に変更を破棄できます。

于 2012-08-16T18:53:55.167 に答える