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

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

  工作区:即自己当前分支所修改的代码,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. 初识NodeJS

    1.JavaScript 模块化规范 浏览器环境 AMD Asynchronous Module Definition RequireJS CMD Common Module Definition S ...

  2. Subsets II

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  3. [LeetCode] Nth Digit 第N位

    Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... Note: n i ...

  4. 当AngularJS POST方法碰上PHP

    问题描述 怎么POST过去给PHP都收不到资料? $_POST方法取不到正确的传入值! 原理说明 AngularJS这套framework使用的AJAX方法中,资料传递的格式为JSON,送出去的hea ...

  5. web 前端常用组件【07】弹出层 Layer

    web 项目中总是需要弹出框,来让用户进行下一步的操作. 大到弹出另外一个页面,小到弹出提示.确认等. 经手几个项目,还是感觉 Layer 用起来比较的轻松,你能想到的 Layer 都能帮你做到. 感 ...

  6. ElasticSearch第二步-CRUD之Sense

    ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...

  7. mac上安装ubuntu双系统

    mac和ubuntu双系统 mac系统安装ubuntu双系统的方法, mac系统要安装ubuntu, 必须使用u盘作为启动盘, 在mac启动的时候引导mac安装ubuntu, 下面为详细的安装方法: ...

  8. Django进阶(一)

    Url进阶 mysit/mysit/urls.py from django.conf.urls import url from django.contrib import admin urlpatte ...

  9. 很不错的Intent用法 适用于正在开发的伙伴。自己看到了,也分享给大家吧。

    本文介绍Android中Intent的各种常见作用. 1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开 ...

  10. JDBC判断数据库是否插入成功

    package com.xujianyou; import java.sql.*; public class TestConnect { public static void main(String ...