Git 代码回滚

并不适合阅读的个人文档。

git revertgit reset 的区别

先看图:

sourceTreerevert 译为提交回滚,作用为忽略你指定的版本,然后提交一个新的版本。新的版本中已近删除了你所指定的版本。

reset重置到这次提交,将内容重置到指定的版本。git reset 命令后面是需要加2种参数的:–-hard–-soft。这条命令默认情况下是 -–soft

执行上述命令时,这该条commit号之 后(时间作为参考点)的所有commit的修改都会退回到git缓冲区中。使用git status 命令可以在缓冲区中看到这些修改。而如果加上-–hard参数,则缓冲区中不会存储这些修改,git会直接丢弃这部分内容。可以使用 git push origin HEAD --force 强制将分区内容推送到远程服务器。

代码回退

默认参数 -soft,所有commit的修改都会退回到git缓冲区
参数--hard,所有commit的修改直接丢弃

$ git reset --hard HEAD^         回退到上个版本
$ git reset --hard commit_id    退到/进到 指定commit_id

推送到远程

$ git push origin HEAD --force

可以吃的后悔药->版本穿梭

当你回滚之后,又后悔了,想恢复到新的版本怎么办?

git reflog打印你记录你的每一次操作记录

$ git reflog

输出:
c7edbfe HEAD@{0}: reset: moving to c7edbfefab1bdbef6cb60d2a7bb97aa80f022687
470e9c2 HEAD@{1}: reset: moving to 470e9c2
b45959e HEAD@{2}: revert: Revert "add img"
470e9c2 HEAD@{3}: reset: moving to 470e9c2
2c26183 HEAD@{4}: reset: moving to 2c26183
0f67bb7 HEAD@{5}: revert: Revert "add img"

找到你操作的id如:b45959e,就可以回退到这个版本

$ git reset --hard b45959e

  转载请注明: 张成的博客 Git 代码回滚

 上一篇
使用 .Gitignore 忽略 Git 仓库中的文件 使用 .Gitignore 忽略 Git 仓库中的文件
使用 .gitignore 文件忽略指定文件 .gitignore在Git中,很多时候你只想将代码提交到仓库,而不是将当前文件目录下的文件全部提交到Git仓库中,例如在MacOS系统下面的.DS_Store文件,或者是Xocde的操作记
2017-02-22 BY
下一篇 
Git指令整理 Git指令整理
随便整理的一些自用的Git指令 GitHub创建仓库提示代码echo "# 项目名" >> README.md git init git add README.md git commit -m "
2017-02-15 BY
  目录