当commit提交了错误代码或删除文件。想回退到git某些版本的几种情况。
以下是在Mac系统的git演示。终端也是在Mac系统
commit到git本地,push提交到远程仓库后
git 回退到指定版本:
执行以下命令
git reset --hard 0g12k3j
解释:git reflog查看提交的历史记录,每次提交都有一个commit ID记录,实际上是SHA-1码
解释:git reset 退回的命令,--hard 表示工作区的(我们所见所开发的目项目)同时恢复到指定
提交的版本,若不加--hard 或者加上--soft,只是缓存区会变,我们项目里看不到退回的效果。
中划线红色的commit ID替换成你的历史记录中的指定某个版本commit ID
也可以直接用命令 git reset --hard HEAD~3 // 3代表回滚到最近3次提交回滚,改成1,就是上次的版本
解释: git push -f 强制提交到远程版本,也就是说远程的版本也回滚到本地的
遇到的问题:
若项目重新克隆已被错误提交的项目时,git log 没有记录或者记录为一条
这是我项目的个人原因,由于项目太大,tag太多,当初项目克隆的时候容易失败。
所以快速下载只克隆了深度为1的项目,即克隆最近一次提交的项目导致没有log记录只为一条
改下克隆深度即可,比如10深度:
git clone -b publicFund-feature http://100.100.100.100/iOS/myIOS.git --depth 10