git本地及远程分支回退

424 阅读2分钟

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的提交,这一撤销动作会作为一个新的修改存储起来,当你和服务器同步时,就不会产生什么副作用。