Git:如何回滚/撤消对图像的更改?

时间:2011-06-27 20:04:10

标签: git git-revert

因此,我们的设计师对一些图像进行了一些更改,并提交了更改。所以现在我们的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 1Commit 2中所做的更改覆盖新图像?

2 个答案:

答案 0 :(得分:7)

您要做的是从旧提交中检出文件。

看起来像是:

git checkout <commit 1 refspec> imagefilename.png

提交refspec可能是HEAD {4},也可能是SHA或者标签....引用该提交的东西。然后它将作为添加和提交的更改位于您的工作目录中。

答案 1 :(得分:1)

如果这些都不是合并提交,那么git revert <Commit 3> <Commit 4>应该做到这一点(其中<Commit X>是提交的SHA1)。如果您有未提交的更改,请执行git stash

或者,执行git checkout <Commit 2> -- <filenames of images to be restored>后跟git add和提交。