git版本的回退
使用ide的伙伴,基本都可以通过插件来自动的来进行版本的回退,十分的方便,这里我主要记录下使用命令行时候的功能,因为自己的电脑比较垃圾,项目内的文件又十分的多,用命令行对于我来说,会十分的顺畅,不像使用插件那样十分的卡
git reset
这里我们准备一个文件,我们想要将其回退到最初的版本
执行完git reset commit-id
以后,我们查看下status
历史的那个版本是我们需要回退的,所以我们执行下git restore <file>
就可以了
git revert
revert众所周知,是创建一个新的commit,不会影响历史
我们有如下的提交历史
现在我想回退到 cda3 这个历史记录,执行命令git revert cda3xxx
,界面提示我们,有冲突,我们打开冲突看下
?我只是想要去掉211111111
这行,怎么连4都是冲突了的呢? 原来4是我们在cda3
提交的内容,初始的时候,这个文件是没有 4 这一行的,也就是说,它直接回到了这个提交没有commit的状态,你的4作为一个新的改动被保留了
好了,现在我们修改一下,然后提交,就可以实现回退版本了
git revert 对单个文件
git revert经过测试发现,是针对整个repository的,无法针对单个文件来实现回退,如果想要对单个文件实现类似git revert
的功能,可以使用命令git checkout [commit id] -- [/path/file]
来进行,而我经过测试发现,这个方法目前只能回退一个版本,如果超过1个,似乎还是不行
patch 补丁
还有一种实现类似revert的方式是使用补丁,首先我们通过git diff
的方式来制作补丁,git diff fcecfc 8eeeb b > /tmp/b.diff
得到的diff是第二个commit 对比第一个 commit的差异,然后我们使用这个补丁git apply /tmp/b.diff
, 文件状态就会是已修改,我们查看下文件内容是否为我们期望的,确认好了以后,就可以commit保存了