4

そのため、デザイナーはいくつかの画像にいくつかの変更を加え、変更をコミットしました。これで、git log次のようになります。

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 1で行った変更で新しい画像を強制的に上書きできるようにするには、どうすればよいCommit 2ですか?

4

2 に答える 2

9

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

次のようになります。

git checkout <commit 1 refspec> imagefilename.png

そのコミットrefspecはHEAD{4}であるか、SHAまたはタグである可能性があります。...そのコミットを参照するもの。次に、追加してコミットするための変更として、作業ディレクトリに配置されます。

于 2011-06-27T20:14:39.710 に答える
1

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

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

于 2011-06-27T20:09:09.907 に答える