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