git撤销提交(commit)
我们知道Git有三大区(工作区、暂存区、版本库)以及几个状态(untracked、unstaged、uncommited)
一、简介
Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。
git reset命令是git中重置命令,即用来撤销某次提交(commit)。首先,我们得了解,git reset可以帮我们重置哪些内容:
1、修改本地仓库中commit对象(快照)
如下图:
此时本地仓库对应的是commit4,git reset 可以让本地仓库对应的指针变为commit3或是commit1等之前的版本,当然,也可以变为commit4之后的某个commit,如commit5。
Git 的分支,其实本质上仅仅是指向提交对象的可变指针。
备注:当使用git reset命令时候,一般会修改本地仓库。
其常用格式如下:
- 用法一:git reset [-q] [] [--] ...
- 用法二:git reset [--soft | --mixed | --hard | --merge | --keep ] [-q] [commit]
二、参数
参数说明 (git log和git reflog可查看commitId,commitId是快照的唯一标识)
--hard commitId 修改本地仓库、暂存区、工作区里面的数据为commitId对应快照的内数据

--mixed commitId 修改本地仓库、暂存区里面的数据为commitId对应快照里的数据,是git reset默认的参数,--mixed可缺省。 暂存区的数据会被快照中的数据覆盖

这种情况是工作区没有,但暂存区有,所以提示修改未在暂存区(D表示delete)--soft commitId 修改本地仓库里面的数据为commitId对应快照的数据。(仅改变指向快照的指针指向)

当git reset 后面的commitId为当前提交的commitId时,即HEAD(可缺省)。那么:
参数说明
- --hard HEAD 修改暂存区、工作区里面的内容为当前快照里的内容。(这个很危险,曾经踩过坑,电脑的文件丢失了很多,也是导致我决心好好学一学git的原因,慎用)
- --mixed HEAD 修改暂存区里面的内容为当前快照里的内容,是git reset默认的参数,因此可缺省。
- --soft HEAD 本地仓库、暂存区、工作区都不改变 |
我们需要注意,使用git reset重置一般是很危险的,会彻底地丢掉历史。因为如果没有记录下重置前的commitId,一般不容易找回,除非分析.git/logs里面的日志,故重置需慎重。
git diff只对已被追踪的文件起作用,即已git add过,在暂存区有的
git commit -a -m只对已被追踪的文件起作用,
git撤销提交(commit)的更多相关文章
- git 撤销提交的文件
一.问题 近期在使用git时遇到一个问题,就是在git上传文件时,将一个100兆的大文件添加到了git,并执行了push操作,这时在上传完毕后,会提示这个错误 Large files detected ...
- Git撤销提交和修改相关操作
团队开发中经常遇到错误删除文件,错误提交等情况,那么使用Git该如何正确的进行撤销和恢复呢? 一.增补提交 git commit –C HEAD –a --amend -C表示复用指定提交的提交留言, ...
- git tag、gitignore和git撤销提交
前言 最近在git的使用过程中遇到了一些新的问题,所以写下来方便自己回忆. git tag 打标签 git tag -a v1.00 -m "注释" git tag 打标签命令 - ...
- git撤销提交到remote的commit
Reseting remote to a certain commit Assuming that your branch is called master both here and remotel ...
- Git撤销提交
本文链接:http://volnet.github.io/#!docs/git/reset-to-old-version.md 在使用Git进行版本管理的时候,经常会遇到一些错误的提交. 在开始演示之 ...
- git撤销远程commit
git reset --hard [commit_id] git push origin HEAD --force
- git 撤销远程 commit
参考: https://blog.csdn.net/xs20691718/article/details/51901161 https://www.cnblogs.com/lfxiao/p/93787 ...
- git 只提交部分修改文件
1.git status //查看修改文件状态 2.git add //将想要提交的文件add到本地库 4.git status //查看修改文件状态 3.git commit //提交add到 ...
- Git 撤销所有未提交(Commit)的内容
撸了好多代码,但是突然设计改了(~~o(>_<)o ~~):或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个):那,怎么办呢,都不想了...Git 比人聪明,所以能很 ...
随机推荐
- C# windform 使用TreeGridView
1 下载 treeGridView.DLL库文件. 2 添加到工程中. 右键“工具箱”选择“选择项” 弹出对话框 选择“浏览” 选中下载还的dll库文件.完成后工具箱中会有 treeGridView控 ...
- Java反射机制介绍
1. 文档概述 Java反射是Java被视为动态(或准动态)语言的一个关键性质,Java反射机制容许程序在运行时加载.探知.使用编译期间完全未知的classes.换言之,Java可以加载一个运行时才得 ...
- 【转】C#中Serializable序列化实例详解
这篇文章主要介绍了C#中Serializable序列化,以实例形式详细讲述了系列化的技术及各种序列化方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C#中Serializable序列化.分 ...
- DOM LEVEL 1 中的那些事儿[总结篇-下]
本文承接:DOM LEVEL 1 中的那些事儿[上] 2.3 Element类型 Element类型应该是Document类型之外使用的最多的节点类型了,Element代表XML或HTML文档中的 ...
- Android开发重点难点:RelativeLayout(相对布局)详解
https://i.cnblogs.com/EditPosts.aspx?opt=1 重点知识 和线性布局(LinearLayout)一样,RelaiveLayout相对布局也是我们用的比较多的一个布 ...
- tcp server
SO_REUSEADDR Ignore SIGPIPE TCP_NODELAY TCP_QUICKACK
- new关键字创建对象带不带{}的区别
gson通过TypeToken实现了对泛型数据的支持,使用方式如下: gson.fromJson([待转化的字符串], new TypeToken<[目标类]<目标类中的泛型>> ...
- python学习笔记14-函数
使用关键字def来创建函数 注意缩进 函数命名规则: 1.必须以下划线或者字母开头 2.区分大小写 3.不能是保留字 调用函数一定记得加括号 def print_info(name,age) pri ...
- 利用django-simple-captcha生成验证码
参考文档 http://django-simple-captcha.readthedocs.io/en/latest/ django支持1.7+ 1.安装 pip install django-sim ...
- 找到IIS 站点对应的站点日志
IIS6 下 IIS7 下 1 找到日志文件的路径 2 找到站点ID 3 打开日志文件路径,找到站点ID 对应的日志文件夹.文件夹的最后一位数字,就对应着站点ID.

