我们在写代码的任何过程中,都有可能出错,任何过程都有可能要!回!滚!代!码!事关重大!一定要详细讲讲。

一、关于 工作区、暂存区、本地分支:

  工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。

  暂存区:已经 git add xxx 进去,且未 git commit xxx 的。

  本地分支:已经git commit xxx 提交到本地分支的。

二、遇到想回滚代码时后怎么办?

1、在工作区的代码,被我写乱了,或者想重写。

git checkout -- a.txt   //丢弃某个文件,或者
git checkout -- . //丢弃全部

注意:git checkout -- . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了。所以,暂存很重要!

2、git add xxx  后,代码不想提交了,此时有两种情况:

  a: 想回到 git add xxx 之前即可,代码需要保留。

git reset HEAD .  或者
git reset HEAD a.js

  b: 压根我就不想要了。有两种办法:

    1: git reset HEAD a.js 退出暂存区;git checkout -- a.js  丢弃掉

    2: 太暴力,后面统一说

3、git commit -m 'xxx' 后,代码不想提交了。

  代码不想提交了,意味着这次commit 的代码都不想要了,要丢弃。因为,如果你要一部分当前的代码,那你完全可以继续修改,再commit提交。

  插入说明一个语法:git log 查看本地commit之后的记录。包括 服务器下载下来的、本地多次commit的、本地commit后push的;如下:

liuxuewens-MacBook-Pro:soeasy-complete-event-static liuxuewen$ git log
commit 69a9c93961ab33e84437eff4d900243b05a9b0bc
Author: liuxuewen <liuxuewen@souyidai.com>
Date: Wed Nov 2 17:05:33 2016 +0800 修改1 commit 490d6657f1b8dffbb5cdb48d6ad823c9b5d38a38
Author: liuxuewen <liuxuewen@souyidai.com>
Date: Wed Nov 2 17:05:18 2016 +0800 修改2 commit 5dc29bebe8de1c1461503d13c4ccae2aaacdf1c0
Author: liuxuewen <liuxuewen@souyidai.com>
Date: Wed Nov 2 17:02:48 2016 +0800 修改3 commit a7852596e0de28ce2425c59b7a5aef2d817082d9
Author: liuxuewen <liuxuewen@souyidai.com>
Date: Wed Nov 2 17:00:48 2016 +0800

  然后,你可以通过 reset 命令回到其中你想要的某个版本,

git reset --hard 5dc29bebe8  //commit id 截取前8位及以上都可以

  或者,你还可以通过 reset 回到最新的一次提交,

git reset --hard HEAD^

  如果你实在只是不想commit,只想让代码回到工作区,不想丢弃,可以这样:

git reset HEAD^  //此时代码保留,回到 git add xx 之前

  注意:不管是 git checkout -- xxx 丢弃,或者是 git reset xxx 都一定要!小!心!操!做!因!为!意!味!着!你!本!地!写!的!代!码!将!丢!失!当然,确定没用,该扔就扔!

git用法之[回滚代码]的更多相关文章

  1. git如何正确回滚代码

    git如何正确回滚代码 方法一,删除远程分支再提交 ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 $ git co currentBranch $ git pull origin curr ...

  2. Git如何回滚代码?

    摘要: 多年以后,你面对一个需要回滚的Git仓库,准会想起这篇博客. 某一天,用户跟我反馈,他不能分配任务了.我去看了一下Fundebug捕获的报错信息: 可知,出错原因是前端发送的请求参数有问题.这 ...

  3. sql事务(Transaction)用法介绍及回滚实例

    sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...

  4. git的几种回滚 git revert 和 git reset的区别

    git的几种回滚 git revert 和 git reset的区别:强烈建议:对HEAD不熟的话最好不要用HEAD,直接用commitID吧,我遇到的问题:reset HEAD~1之后,可能是别人提 ...

  5. svn上想回滚代码怎么办?——svn merge 命令

    小博客断更了很久,最近想接着尝试建立写作的习惯,把自己工作生活遇到的有用知识沉淀下来.尽管微信公共账号比较火,但个人觉得这种不能用搜索引擎检索的东西完全就是历史的倒退,就像 RSS 这种提高信息传播效 ...

  6. Git回滚代码暴力法

    Git回滚有多种方式,这里使用的是[强制提交到远程分支] 效果为:如回滚前的提交记录是 1.2.3.4,使用这种方法回滚到2,那么提交记录就变成了1.2. 操作方法: 需要在本地的Git仓库,右键选择 ...

  7. 记录一次git回滚代码

    老大临时让更新一版代码到本地,熟练的git fetch/git merge 之后,出来了一批改动的文件,但是并不是我改动的. 我以为是版本迭代出来的其他同事改的,我就直接给add commit到我的版 ...

  8. Git回滚代码

    回滚命令: 1.回退到上个版本 $ git reset --hard HEAD^ 2.回退到前2次提交之前,以此类推,回退到n次提交之前 $ git reset --hard HEAD~2 3.退到/ ...

  9. Git远程库版本回滚

    在git的一般使用中,如果发现错误的将不想staging的文件add进入index之后,想回退取消,这就叫做git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id.可以使用命令:g ...

随机推荐

  1. 前端之ajax

    前端之ajax 本节内容 ajax介绍 原生js实现ajax jquery实现ajax json 跨域请求 1. ajax介绍 AJAX(Asynchronous Javascript And XML ...

  2. Android 6.0 运行时权限处理完全解析

    一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http:// ...

  3. 【swift学习笔记】四.swift使用Alamofire和swiftyJson

    Alamofire是AFNetworking的swift版本,功能灰常强大. github:https://github.com/Alamofire/Alamofire SwiftyJSON是操作js ...

  4. css一些进入条

    http://www.jq22.com/jquery-info5309 http://www.jq22.com/jquery-info10964 http://www.jq22.com/jquery- ...

  5. vue.js第六课

    class与style绑定 绑定HTML class 对象语法 数组语法 绑定内联样式 对象语法 数组语法 自动添加前缀 1.class与style绑定. 数据绑定一个常见需求就是 操作元素的clas ...

  6. 提高前端开发效率必备AngularJS (基础)

    简介 AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使 ...

  7. 搭建web框架手册(一)

    昨天听完永康对EASYUI的介绍后终于明白了优秀的UI框架就是第一生产力,过去自己一直沉浸在后端代码中,完全忽视了前端的生产力交互,总觉得界面漂亮就是生产力,其实大错特错,真正的具有高效生产力的界面其 ...

  8. JS倒计时执行操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1288  Solved: 490 ...

  10. Android源码——Broadcast Receiver

    Android源码分析——广播 广播是一种在组件之间进行消息传递的方式.广播机制的实现是基于Binder进程间通信. Binder进程间通信和广播的差别:Binder中,Client组件和Servic ...