git代码回滚的两种选择

回滚到指定commit,且保持该commit之前和之后的提交记录

使用git revert命令。

git revert HEAD                  // 回滚到前一次 commit
git revert HEAD^                // 回滚到前前一次 commit
git revert commitID (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff) //回滚到指定版本的前一次提交,撤销也会作为一次提交进行保存。

git revert是提交一个新的版本,版本会递增,不影响之前提交的内容。

实际体验

git revert命令使用体验糟糕。
git revert的原则是不影响之前提交的内容。
这意味着你在a文件修改了,commit了。
然后使用git revert回滚的commit id只是b文件的修改提交。
这时你的a文件修改还存在,没有被回滚。
git revert操作,也会常常导致conflict。
原因是之前版本的内容肯定和当前不一样。
你要解决conflict,才能生成一个新版本。

回滚到指定commit,丢弃该commit之后的提交记录

  • 删除远程分支再提交
git reset --hard resetVersionHash
git push origin :currentBranch  //或者这么写git push origin --delete currentBranch
git push origin currentBranch 
  • 或者强制提交当前分支覆盖远程分支
git reset --hard resetVersionHash
git push -f origin currentBranch
posted @ 2017-08-08 22:36  草珊瑚  阅读(3609)  评论(0编辑  收藏  举报