git用法之[回滚代码]
我们在写代码的任何过程中,都有可能出错,任何过程都有可能要!回!滚!代!码!事关重大!一定要详细讲讲。
一、关于 工作区、暂存区、本地分支:
工作区:即自己当前分支所修改的代码,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用法之[回滚代码]的更多相关文章
- git如何正确回滚代码
git如何正确回滚代码 方法一,删除远程分支再提交 ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 $ git co currentBranch $ git pull origin curr ...
- Git如何回滚代码?
摘要: 多年以后,你面对一个需要回滚的Git仓库,准会想起这篇博客. 某一天,用户跟我反馈,他不能分配任务了.我去看了一下Fundebug捕获的报错信息: 可知,出错原因是前端发送的请求参数有问题.这 ...
- sql事务(Transaction)用法介绍及回滚实例
sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...
- git的几种回滚 git revert 和 git reset的区别
git的几种回滚 git revert 和 git reset的区别:强烈建议:对HEAD不熟的话最好不要用HEAD,直接用commitID吧,我遇到的问题:reset HEAD~1之后,可能是别人提 ...
- svn上想回滚代码怎么办?——svn merge 命令
小博客断更了很久,最近想接着尝试建立写作的习惯,把自己工作生活遇到的有用知识沉淀下来.尽管微信公共账号比较火,但个人觉得这种不能用搜索引擎检索的东西完全就是历史的倒退,就像 RSS 这种提高信息传播效 ...
- Git回滚代码暴力法
Git回滚有多种方式,这里使用的是[强制提交到远程分支] 效果为:如回滚前的提交记录是 1.2.3.4,使用这种方法回滚到2,那么提交记录就变成了1.2. 操作方法: 需要在本地的Git仓库,右键选择 ...
- 记录一次git回滚代码
老大临时让更新一版代码到本地,熟练的git fetch/git merge 之后,出来了一批改动的文件,但是并不是我改动的. 我以为是版本迭代出来的其他同事改的,我就直接给add commit到我的版 ...
- Git回滚代码
回滚命令: 1.回退到上个版本 $ git reset --hard HEAD^ 2.回退到前2次提交之前,以此类推,回退到n次提交之前 $ git reset --hard HEAD~2 3.退到/ ...
- Git远程库版本回滚
在git的一般使用中,如果发现错误的将不想staging的文件add进入index之后,想回退取消,这就叫做git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id.可以使用命令:g ...
随机推荐
- web视频添加webvtt字幕测试
1.使用MP4硬字幕,如下, 2.使用HTML5 添加webvtt字幕,可惜到现在还没有测试成功.
- 解读ASP.NET 5 & MVC6系列(9):日志框架
框架介绍 在之前的.NET中,微软还没有提供过像样的日志框架,目前能用的一些框架比如Log4Net.NLog.CommonLogging使用起来多多少少都有些费劲,和java的SLF4J根本无法相比. ...
- [LeetCode] House Robber III 打家劫舍之三
The thief has found himself a new place for his thievery again. There is only one entrance to this a ...
- [LeetCode] Longest Palindromic Substring 最长回文串
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- 侯捷老师C++大系之C++面向对象开发:(一)不带指针的类:Complex复数类的实现过程
一.笔记1.C++编程简介 2.头文件与类的声明 防卫式声明#ifndef __COMPLEX__#define __COMPLEX__ …… #endif头文件的布局模板简介template< ...
- Java处理 文件复制
try { InputStream in = new FileInputStream(new File(oldPath)); OutputStream out = new FileOutputStre ...
- CURL HELP
CURL下载 在windows的系统环境变量中,将CURL的路径(curl.exe存放的路径)复制到"Path"变量的结尾 Usage: curl [options...] < ...
- ORB-SLAM(五)优化
ORB-SLAM作为单目SLAM,其精度很大程度上决定于帧与帧之间的位姿优化的是否准确.因此优化(optimization)在ORB-SLAM里面扮演了很重要的角色.这一小节探讨一下ORB-SLAM里 ...
- 初次认识 C# win32 api
第一次接触win32api,刚开始的时候有点迷迷糊糊的. Windows API 就是windows应用程序接口. win api向上就是windows应用程序,向下就是windows操作系统核心. ...
- ActiveMQ入门
ActiveMQ简介 概要 开源 JMS-compliant 消息中间件message-oriented middleware(MOM) 松耦合,相对于RPC的紧耦合 发送消息fire-and-for ...