git本地版本回退
git log # 拿到commit_id
git reset --hard commit_id
# 可用 git log –oneline 查看
git log
- git log --decorate --graph --oneline --all #显示当前及之前的版本号
- git log --pretty=oneline #将版本历史显示为一行, 历史版本号全部显示 git log --pretty=oneline --abbrev-commit #将版本历史显示为一行, 历史版本号部分显示 git log --graph #查看分支合并图
git远程版本回退
# 远程提交回退
git push origin HEAD --force
# 下面的命令也可以实现远程版本回退
git reset --hard HEAD~1
git push --force
git reset
git reset命令后面是需要加2种参数的:
–hard
和 –soft
。
这条命令默认情况下是–soft
。执行上述命令时,这该条commit号之 后(时间作为参考点)的所有commit的修改都会退回到git缓冲区中。使用git status
命令可以在缓冲区中看到这些修改。而如果加上–hard
参数,则缓冲区中不会存储这些修改,git会直接丢弃这部分内容。
但需要注意的一个问题是:由于这样的重置是直接在本地的修改,无法提交到远程服务器,如果直接丢弃的内容已经被推到远程服务器上了,则会造成本地和服务器无法同步的问题。即git reset –hard只能针对本地操作,不能针对远程服务器进行同样操作。如果从本地删掉的内容没有推到服务器上,则不会有副作用;如果被推到服务器,则下次本地和 服务器进行同步时,这部分删掉的内容仍然会回来。
git revert
git revert + commit_id
该命令撤销对某个commit的提交,这一撤销动作会作为一个新的修改存储起来,当你和服务器同步时,就不会产生什么副作用。