zoukankan      html  css  js  c++  java
  • git版本号回滚

    先说今天遇到的问题,看到一个config.php的配置文件一直在改动的状态下,可是和远程的config.php是不一致的,我不须要提交它,可是看它在 modified的状态下,非常不爽。想删除它。git   rm  config.php,然后git push了下,结果不仅把本地的config.php干掉了,把远程的config.php也给干掉了,难过,原来这个git rm有这种功效,并且我 删除的不仅仅是这一个文件,还有n个文件。


    想到要回滚到近期的一次提交。做这个工作前。提醒下,在本地直接把代码备份一份,要不之后的操作不当。会直接把你的这次改动所有抹杀掉。到时你哭都来不及。除非你对git有相对的把握,深知不论什么 一步操作的意义。了解git的 分支机制。

     回滚分三步:

    (1)备份你当前的代码 库一份,不是必须的操作,可是提醒要 做的,当然有能够用git branch backup 把当前的版本号备份到一个新的分支

    (2)git log找到要回滚的版本号   

    (3)git reset --hard 要回滚到的版本。比方 git reset --hard 91deaf(文件都回来了。包含config.php)

     然后git status的时候,可能会提醒你 Your branch is behind 'origin/master' by 2 commits 类似的错误。然后提醒你用git pull先下拉。假设你直接git push是推不了的,
    由于远程已经是在你reset后的版本号了,也就是说远程的版本号比你reset的版本号新,你是reset回滚到老版本号的。
     可是你git pull后(我用的是git fetch,之后再git merge合并)。又会又一次把远程的最新版本号库覆盖掉本地的老版本号,这样又回到了刚開始的问题。


     假设 你在上述回滚三步之后,假设发现 有问题 ,又一次切换到备份分支,也回到了刚開始的你本地的操作開始的版本号,也就是reset回滚回来的文件又被删除了,比方config.php。这点非常NB。

    事实上备份分支也就是你当前最新状态的版本号 。reset后回到了老版本号。

    那么究竟怎么解决这个问题呢?用了一个非常笨的办法,可是眼下没有找到好的方法。

      git reset 后。git  push -f 强推,假设不带參数-f是推不了的。

      推过之后。再把你这次改动的文件一个个加上去。git add ,git  commit ,git push 完成。


    思考:或许在用git  reset --soft会解决问题。

  • 相关阅读:
    Web服务器的有关概念
    备份微信中大量的公众号,备份其二维码图片
    (转载)使用SecureCRT连接Linux时,alt + .等功能键不能使用的解决办法
    Q查询
    ManyToMany参数(through,db_constraint)
    formset批量处理form表单数据
    modelform动态显示select标签的对象范围
    request对象的常用属性和方法
    Django查询orm的前一天,前一周,一个月的数据
    render的几个应用
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5128599.html
Copyright © 2011-2022 走看看