Git本地及远程分支回退

1. git本地版本回退

Git reset --hard commit_id(可用 git log –oneline 查看)

2. git远程版本回退

git push origin HEAD --force #远程提交回退

下面的命令也能够实现远程版本回退nginx

git reset --hard HEAD~1 git push --force

3. git reverse和git reset的区别

  • git revert是用一次新的commit来回滚以前的commit,git reset是直接删除指定的commit。
  • 在回滚这一操做上看,效果差很少。可是在往后继续merge之前的老版本时有区别。由于git revert是用一次逆向的commit“中和”以前的提交,所以往后合并老的branch时,致使这部分改变不会再次出现,可是git reset是之间把某些commit在某个branch上删除,于是和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  • git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,可以抵消要被revert的内容。

git reset + commit号

git reset命令后面是须要加2种参数的:
”–hard””–soft”git

这条命令默认状况下是”–soft”。执行上述命令时,这该条commit号之 后(时间做为参考点)的全部commit的修改都会退回到git缓冲区中。sql

使用git status命令能够在缓冲区中看到这些修改。而若是加上”–hard”参数,则缓冲区中不会存储这些修改,git会直接丢弃这部份内容。服务器

但须要注意的一 个问题是:因为这样的重置是直接在本地的修改,没法提交到远程服务器,若是直接丢弃的内容已经被推到远程服务器上了,则会形成本地和服务器没法同步的问题。spa

即git reset –hard只能针对本地操做,不能针对远程服务器进行一样操做。若是从本地删掉的内容没有推到服务器上,则不会有反作用;若是被推到服务器,则下次本地和 服务器进行同步时,这部分删掉的内容仍然会回来。code

而上面注意中提到的问题则能够很好的被git revert 命令解决。同步

git revert + commit 号
该命令撤销对某个commit的提交,这一撤销动做会做为一个新的修改存储起来,这样,当你和服务器同步时,就不会产生什么反作用。it

相关文章
相关标签/搜索