git 的几种撤销操作

git 撤销更改

总结一下希望以后不再记混淆, 也希望看到这里的同学不犯同样的错, 这里主要介绍一下几种错误的解决方案:

  1. 修改暂存内容的撤销
  2. 暂存提交内容的撤销
  3. 提交推送内容的撤销
  4. 推送服务器内容的撤销

以上几种情况几乎覆盖到工作中常用的所有情况, 当然你要是有更复杂的情况, 那就只能再想想别的办法, 因为我这边只有两个人同时开发, 所以遇到的情况就这些, 下面说一下解决方案:

  1. 修改暂存内容的撤销. 这种情况一般是自己修改了很多东西, 但是突然领导说这些东西都不用了, 并且未来也不用了, 那么你很多修改过的文件想一下子撤回, 只需要用下面的一个命令即可,

    //--hard 表示强制回到某个版本, head是指当前版本的原始状态, 这行完之后就完全回到了最后一次pull之后的状态
    git reset --hard head   
    

    当然执行这个代码之前一定要先看看自己修改了那些内容, 在这中状态下执行下面的命令即可

    git diff 
    执行结果如下
    
    wangjunlingdeMacBook:MyDemo wangjunling$ git diff
    diff --git a/MyDemo/MyDemo/ViewController.m b/MyDemo/MyDemo/ViewController.m
    index 2c4d434..844ebbf 100644
    --- a/MyDemo/MyDemo/ViewController.m
    +++ b/MyDemo/MyDemo/ViewController.m
    @@ -79,6 +79,9 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
         
         NSLog(@"测试");
         
    +    NSLog(@"测试");
    +    
    +    
     }
    
    

    在终端中可以清晰看得出这次进行的增删改查的具体信息

  2. 暂存提交内容的撤销. 这种情况很少有但是如果发生了要有方法解决, 如果采取第1中情况的解决方案也是可以的, 但是有时候有些更改我们并不想全部放弃, 对于这种情况执行以下操作 :

    //1. 可以先看看更改了什么, 这时候再执行 git diff 就什么都看不到了, 因为git diff 不带参数的时候对比的是当前版本的变化, 而通过 git add . 之后则需要对比的是 暂存区和当前分支的变化, 所以需要加一个head参数即:
    git diff head
    //2. 执行下面的命令可以撤销暂存, 保留当前的修改状态, 等调整之后再暂存提交即可
    git reset head
    //执行上面的命令后, 再执行 git diff 如果有更改说明修改的内容已经从暂存区挪出来了
    
  3. 提交推送内容的撤销, 已经commit的更改, 突然发现某个地方修改错了, 想撤销, 但是又不能全部撤销, 所以我们可以通过下面的命令撤销commit

    //同样的我们先去执行git diff 没内容, 再执行 git diff head 仍然没有信息, 为什么呢, 因为我们现在要对比的是 commit和head之间的不同, 所以我们需要加入两个要对比的版本的参数, 如下
    
    git diff head^ head
    
    执行完就能看到当前提交内容的修改, 然后执行 撤销操作
    
    git reset head^
    
    这样代码就会回到上此来回来的状态, 并且新修改的代码都还在
    如果执行 git reset --hard head^ 这样直接把修改的东西全都抛弃了, 并回到未修改前的状态
    
    
  4. 推送服务器内容的撤销. 这种情况虽然比较危险但是如果抢救及时还是没问题的, 首先还是查看变化

     //下面这条命令是查看你刚提交到远程端的代码和本地上个版本的不同, 也即是你提交的那部分代码的变化
     git diff  origin/head head^
     
     //解决问题的思路是将本地的内容回退的上个版本, 修改之后再提交到远程端, 命令和第三种情况一样, 如果需要保留修改的代码, 那就不要加--hard, 如果不需要保留则需要加 --hard, 这里我们暂定需要保留
     git reset head^ 
     
     执行完之后你的文件全部变成了未提交的状态, 这时候实际上你的版本已经落后服务器一个版本了, 所以当你修改完之后, git  push 会被服务器拒绝, 信息如下
     To github.com:wangjunling888/MyDemo.git
     ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'git@github.com:wangjunling888/MyDemo.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    解决方案 就是 用-f参数(force)强制执行覆盖操作, 当然这个操作之前一定要确定你的同事没有提交其他的代码, 要不然你把被人的代码都覆盖掉了就麻烦了, 命令如下
    
    git push -f
     
     
    

    好了, 就总结到这里, 技术有限, 如有疏漏或错误,欢迎留言区留言交流.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • 一、电脑本地初始化一个仓库 1. git init: 初始化一个电脑上本地仓库 终端进入项目目录,输入: 该命令将...
    dragon_li阅读 2,894评论 1 4
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,683评论 1 17
  • 就在今天,一切都消失殆尽,一切都不在记忆。无尽的祭坛消失在茫茫宇宙,这个世界没有什么能抵挡这份不知如何相处来的疑惑...
    酸菜伴辣椒阅读 187评论 0 0
  • 8月3日,郑州市卫计委“十大指标”检查组专家一行8人莅临郑州美中商都妇产医院,对我院2017年年中“十大指标”落实...
    想不到吧_b182阅读 192评论 0 0
  • 校区的装修将要接近尾声,接踵而来的招生工作已然成了我生活的全部。 中午吃过饭开始坐到电脑前一直坐到下午四点,历经四...
    远方文学苗苗老师阅读 285评论 1 1