使用git 管理代码比较方便。当代码提交后发现问题时,想要回滚,要怎么做呢?
git 有 revert 和 reset 两种方式。但用途并不一样:
git revert 撤销
git reset 回退。
例子:
如果先后做了3次提交 commitA、commitB、commitC,分别改了A文件、B文件、C文件。
如果在git中查看
-
commitC
-
commitB
-
commitA
当前是commitC。
撤销:使用git revert
-
git revert commit-id
-
// 其中,commit-id是目标commit的log代号,就是每次提交会自动生成的很长一串的字符代号,取前7位即可
想要撤销B文件的更改
git revert commitB
想要撤销C文件的更改
git revert commitC
所以git revert 是撤销某次commit的更改,和其他commit无关。
代码出问题了,想要回滚到之前版本怎么办?
回滚:使用git reset
git reset --hard HEAD~n
其中 HEAD 表示当前位置,即最后一次提交。
回滚到往前几次的提交呢? 例如,
回滚到前一次
-
git reset --hard HEAD^ // ^表示往前一次
-
或
-
git reset --hard HEAD~1
回滚到前2次
-
git reset --hard HEAD^^ // ^表示往前一次
-
或
-
git reset --hard HEAD~2
回滚到前100次
git reset --hard HEAD~100