设为首页 收藏本站
查看: 701|回复: 0

[经验分享] Git版本恢复命令reset(转载)

[复制链接]

尚未签到

发表于 2018-1-16 08:53:22 | 显示全部楼层 |阅读模式
  本博文转载自:http://www.tech126.com/git-reset/; 如果看不懂的话,请在git下练习,如果练习后任然有不懂的,可以留言也可以发送邮件到luoquantao@126.com
  reset命令有3种方式:
  1:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
  2:git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
  3:git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
  

#回退所有内容到上一个版本  
git reset HEAD^
  
#回退a.py这个文件的版本到上一个版本
  
git reset HEAD^ a.py
  
#向前回退到第3个版本
  
git reset –soft HEAD~3
  
#将本地的状态回退到和远程的一样
  
git reset –hard origin/master
  
#回退到某个版本
  
git reset 057d
  
#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit
  
git revert HEAD
  

  

  如果我们某次修改了某些内容,并且已经commit到本地仓库,而且已经push到远程仓库了
  这种情况下,我们想把本地和远程仓库都回退到某个版本,该怎么做呢?
  前面讲到的git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化
  这样,即时本地reset了,但如果再git pull,那么,远程仓库的内容又会和本地之前版本的内容进行merge
  这并不是我们想要的东西,这时可以有2种办法来解决这个问题:
  1:直接在远程server的仓库目录下,执行git reset –soft 10efa来回退。注意:在远程不能使用mixed或hard参数
  2:在本地直接把远程的master分支给删除,然后再把reset后的分支内容给push上去,如下:
  

#新建old_master分支做备份  
git branch old_master
  
#push到远程
  
git push origin old_master:old_master
  
#本地仓库回退到某个版本
  
git reset –hard bae168
  
#删除远程的master分支
  
git push origin :master
  
#重新创建master分支
  
git push origin master
  

  在删除远程master分支时,可能会有问题,见下:
  

$ git push origin :master  
error: By
default, deleting the current branch is denied, because the next  
error:
'git clone' won't result in any file checked out, causing confusion.  
error:
  
error: You can set 'receive.denyDeleteCurrent' configuration variable to
  
error: 'warn' or 'ignore' in the remote repository to allow deleting the
  
error: current branch, with or without a warning message.
  
error:
  
error: To squelch this message, you can set it to 'refuse'.
  
error: refusing to delete the current branch: refs/heads/master
  
To git@xx.sohu.com:gitosis_test
  
! [remote rejected] master (deletion of the current branch prohibited)
  
error: failed to push some refs to 'git@xx.sohu.com:gitosis_test'
  

  这时需要在远程仓库目录下,设置git的receive.denyDeleteCurrent参数
  

git receive.denyDeleteCurrent warn    

  然后,就可以删除远程的master分支了
  虽然说有以上2种方法可以回退远程分支的版本,但这2种方式,都挺危险的,需要谨慎操作……

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435573-1-1.html 上篇帖子: Git撤销提交和修改相关操作 下篇帖子: git整理纷乱的历史合并记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表