2011-06-27 7 views
2

私たちのデザイナーはいくつかのイメージにいくつかの変更を加え、変更をコミットしました。だから今、私たちgit logは次のようになります。Git:画像に変更をロールバック/元に戻す方法は?

Commit 1: Changed images 
Commit 2: Oops, forgot to commit a few images 

...その後ビジネスは彼らが異なって見えるしたかったので、設計者はそれらを変更し、再度コミット:

Commit 1: Changed images 
Commit 2: Oops, forgot to commit a few images 
Commit 3: Changed images again 
Commit 4: Minor tweaks to new images just committed 

を...今彼らは初めての方が良いイメージを好むと判断しました。だから、今度は、彼らが最初のやり方に戻っていく必要があります。私はいくつかのアプローチを試してみましたが、私が使用する必要があるアプローチはgit revertだと思いますので、以前のようにイメージを元に戻す新しいコミットを作成することができます。しかし、私はこれをやろうとすると葛藤があるようです。 Commit 1Commit 2の変更を加えて新しいイメージを上書きするようにするにはどうすればよいですか?

答えて

7

あなたがしたいことは、古いコミットからファイルをチェックアウトすることです。

それは次のようになります:.... refspecはHEAD {4}であるかもしれないまたはSHAまたは多分タグであるかもしれないコミット

git checkout <commit 1 refspec> imagefilename.png 

そのコミットを参照する何かを。それから、追加とコミットの変更として作業ディレクトリに座ります。

1

これらのいずれもマージコミットでない場合、git revert <Commit 3> <Commit 4>はトリックを実行する必要があります(<Commit X>はコミットのSHA1です)。コミットされていない変更がある場合は、git stashを実行してください。

また、git checkout <Commit 2> -- <filenames of images to be restored>の後にgit addとコミットを実行します。

関連する問題