问题

  1. 回滚上一版
  2. 回滚指定版本

解决方案

  1. 没有push

    1
    git reset [--soft | --mixed | --hard]

    :git reset是直接删除指定的提交。

    ① –mixed:保留源码,回滚到上一版本,git reset 默认是 –mixed 模式,git reset –mixed 等价于 git reset,将commit和index 信息回滚。

    ② –soft:保留源码,将commit 信息回滚,不涉及index的回滚。

    ③ –hard:不保留源码,将commit和index 信息回滚。

  2. 已经push

    1
    git revert commitId

    :git revert用一个新提交来消除一个历史提交所做的任何修改。

操作时注意事项:

第一:

上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突。但是revert 并不会。

第二:

如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里。但是revert 方向提交的commit 并不会出现在历史分支里。

第三:

reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的。

本文地址: http://adbbb.com/2017/05/11/git/2/