先看图:git
sourceTree 中 revert 译为提交回滚
,做用为忽略你指定的版本,而后提交一个新的版本。新的版本中已经删除了你所指定的版本。服务器
reset 为 重置到此次提交,将内容重置到指定的版本。git reset
命令后面是须要加2种参数的:–-hard
和 –-soft
。这条命令默认状况下是 -–soft
。spa
执行上述命令时,这该条commit号之 后(时间做为参考点)的全部commit的修改都会退回到git缓冲区中。使用git status
命令能够在缓冲区中看到这些修改。而若是加上-–hard
参数,则缓冲区中不会存储这些修改,git会直接丢弃这部份内容。能够使用 git push origin HEAD --force
强制将分区内容推送到远程服务器。code
默认参数 -soft
,全部commit的修改都会退回到git缓冲区
参数--hard
,全部commit的修改直接丢弃it
$ git reset --hard HEAD^ 回退到上个版本 $ git reset --hard commit_id 退到/进到 指定commit_id
推送到远程im
$ git push origin HEAD --force
当你回滚以后,又后悔了,想恢复到新的版本怎么办?db
用git reflog
打印你记录你的每一次操做记录img
$ 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