相比传统的版本管理工具,git 的 undo 操作也不是很简单明了,本文尝试总结常用的 undo 操作。

重新提交

应该避免考虑不周全的提交,但这太难了。因此Git 专门提供了一个命令来弥补粗心的提交导致的问题。说白了就是让你重新提交一次。

$ git commit --amend

这个命令会重新提交暂存区中的内容。因此你可以重新考虑哪些文件需要提交,并且把这次提交用的comment准备好。

为了更好的理解这个命令,我们看看它是怎么工作的。

它相当于下面的两条命令:

$ git reset --soft head^
$ git commit -e -F .git/COMMIT_EDITMSG

第一条命令让头指针指向上次的提交,并且不改变暂存区和工作区。

第二条命令是重新提交,并且强制输入提交说明。

回滚暂存区中的变更

我们希望每次提交都是一个相对完整的整体。所以很多时候是提交所有变更文件中的一部分。

举个简单的例子,当前修改了两个文件,希望把它们包含到不同的提交中。所以问题就来了,我们习惯了使用

git add -u 或者 git add . 这样的命令,一不留神就把所有的修改文件添加到了暂存区。

其实git已经很殷勤的告诉我们该怎么做了:

$ git reset head begin.txt

好了再用 git status 命令看看,begin.txt 此时已经离开了暂存区。

回滚工作区中的变更

这是一个很危险的操作,因为这真的会丢掉工作区中的变更,并且是找不回来的。在产生这个念头时,一定要三思!至于具体的操作,Git 也为我们提供了详细的指导:

$ git checkout -- begin.txt

再看看工作区,begin.txt 文件已经被回滚了。

Git undo 操作的更多相关文章

  1. Git远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  2. Git远程操作

    Git远程操作 // */ // ]]>   Git远程操作 Table of Contents 1 Git远程命令概览 2 Git远程仓库与本地仓库的关系图 3 git clone 4 git ...

  3. [转]Git远程操作详解

    原文:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多 ...

  4. Git基础操作

    配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...

  5. Git 远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  6. 【Git】Git远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  7. Eclipse 的 git 插件操作 "代码提交"以及"代码冲突"

    面向对象:曾经使用过SVN的同学. (因为Git 它 可以说是双重的SVN (本地一个服务器,远程一个服务器)),提交代码要有两次步骤,先提交到本地服务器,再把本地服务器在提交到远程服务器. 所以连S ...

  8. git常见操作

    本地仓库关联远程仓库 新建本地目录scala git init 这样就新建了一个本地仓库 在远端如github上新建仓库scala 关联远程仓库 git remote add origin git@g ...

  9. git报错:'fatal:remote origin already exists'怎么处理?附上git常用操作以及说明。

    git添加远程库的时候有可能出现如下的错误, 怎么解决? 只要两步: 1.先删除 $ git remote rm origin 2.再次执行添加就可以了. ---------------------- ...

随机推荐

  1. 【Bugly干货】关于 Android N 那些你不知道的事儿

    今年3月,Google 破天荒提前半年发布了 Android N 开发者预览版.当然,作为一个不合格的谷粉并没有第一时间体验安装,因为至今仍然能够回忆起来去年今日此门中(雾)兴冲冲刷了 Android ...

  2. 在.net中使用aquiles访问Cassandra(四)

    数据的持久化我们都已经完成了,和所有应有程序一样,最重要的是要向用户展示数据.下面我们就推出这部分代码,读取任意行任何列: public IList<TRowResult> Execute ...

  3. Git bash 配置ssh key

    问题描述 昨天为了配置Qt create中的Git,把我一直在使用的Github删除了,今本以为,这样git的一些配置还在,可是,今天上传一些提交的时候,提示我,git没有密钥.梳理一下,这个简单的配 ...

  4. 翻译:AKKA笔记 - Actor消息 -1(二)

    消息 我们只是让QuoteRequest到ActorRef去但是我们根本没见过消息类! 它是这样的: (一个最佳实践是把你的消息类包装在一个完整的对象里以利于更好的组织) TeacherProtoco ...

  5. Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别

    Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别 1.1. 色彩的三要素 -- 色相.明度.纯度1 1.2. YUV三个字母中,其中"Y&quo ...

  6. Django ORM - 001 - 外键表查询主表信息

    开始用Django做web开发,我想大家都会遇到同样的问题,那就是如何高效快速的查询需要的数据,MVC都很简单,但是ORM折腾起来就有些费时间,我准备好好研究下Django ORM,所以会有一个系列的 ...

  7. ligerUI Tree 实例 代码

    http://www.oschina.net/code/snippet_1762525_47819#68813

  8. 美团(iPad)顶部界面的简单实现, 及开发时常见bug

    项目功能介绍:1.支持横竖屏旋转,界面正常显示2.通过点击界面顶部"美团",可展示出左右双tableView分别显示服务类列表和子类列表3.通过点击界面顶部"广州&quo ...

  9. 面向对象tab栏例子分析

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

  10. Representation Data in OpenCascade BRep

    Representation Data in OpenCascade BRep eryar@163.com 摘要Abstract:现在的显示器大多数是光栅显示器,即可以看做一个像素的矩阵.在光栅显示器 ...