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 比人聪明,所以能很 ...
随机推荐
- 201621123018《java程序设计》第12周作业总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...
- Android在onCreate中获取控件的宽高
在某些需求下,我们需要在onCreate的时候就获取到控件的宽高,但是如果直接用view.getWidth()或view.getHeight()会得到0.这是因为在onCreate执行的时候,控件还没 ...
- 一文搞懂Java环境,轻松实现Hello World!
在上篇文章中,我们介绍了Java自学大概的路线.然而纸上得来终觉浅,今天我们教大家写第一个java demo.(ps:什么是demo?Demo的中文含意为“示范",Demo源码可以理解为某种 ...
- Swift 里 Set(四)Testing for Membership
即contains操作 /// - Parameter member: An element to look for in the set. /// - Returns: `true` if `mem ...
- 上传本地文件到github(码云)上(小乌龟方式,sourcetree方式)
一:上传文件到 github 1.打开 https://github.com/ 登录github账号(没有的自己创建),点击右上角创建新仓库 在打开的页面中填写 名字 点击 Create repos ...
- UI的设计,适配器,以及RecyclerView无法加载的解决办法
这本书里讲到的界面设计都是用最基本的方式实现的,即编写xml文件 所有的控件都具有宽度和高度属性,即android:layout_width和android:layout_height,这两个属性对应 ...
- redis的高级事务CAS(乐观锁)
Optimistic locking using check-and-set(乐观锁) 乐观锁介绍:watch指令在redis事物中提供了CAS的行为.为了检测被watch的keys在是否有多个cli ...
- ASP.NET MVC 与NLog的使用
NLog是一个.NET 下一个完善的日志工具,个人已经在项目中使用很久,与ELMAH相比,可能EAMAH更侧重 APS.NET MVC 包括调试路由,性能等方面,而NLog则更简洁. github: ...
- 【转】谷歌三大核心技术(三)Google BigTable中文版
谷歌三大核心技术(三)Google BigTable中文版 摘要 Bigtable 是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据.Goo ...
- Jenkins持久化集成使用
1.概述 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 持续的软件版本发布/测试项目 监控外部调用执行的工作 2.搭建 2.1环境准备 首先我们要准备搭建的环 ...

