本文主要记录了git中,错误的撤销和文件的删除。


撤销修改

    这里有3中情况

  1. 改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
  2. 不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了1,第二步,按照1操作。
  3. 已经提交了不合适的修改到版本库时,想要撤销本次提交,可以版本回退,不过前提是没有推送到远程库。
//第一种撤销:工作区撤销
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt //工作区的错误还没有add到暂存区
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "

git checkout -- <file>..."

 丢弃工作区的改动)

    修改:     readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$

git checkout --

 readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
//第二种撤销:暂存区撤销
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
ubuntu@myubuntu:~/joe/learngit$ git add readme.txt //错误的文件已经提交到暂存区了
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
要提交的变更:
(使用 "

git reset HEAD <file>..."

 撤出暂存区)

    修改:     readme.txt

ubuntu@myubuntu:~/joe/learngit$ git reset HEAD readme.txt
重置后撤出暂存区的变更:
M readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
ubuntu@myubuntu:~/joe/learngit$ git status //撤出暂存区后,还需使用checkout丢弃工作区的改动
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动) 修改: readme.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$

git checkout --

 readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
//第三种已经提交,使用版本回退(学习笔记2)

文件的删除

  1. 使用rm删除文件,然后git add filename添加到暂存区,git commit 提交。
  2. 直接使用git rm filename ,不用git add直接git commit即可。
//第一种方法git rm file
ubuntu@myubuntu:~/joe/learngit$ ls
abc.c readme.txt
ubuntu@myubuntu:~/joe/learngit$

git rm

 abc.c
rm 'abc.c'
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区) 删除: abc.c ubuntu@myubuntu:~/joe/learngit$

git commit -m "del abc"

[master 020f927] del abc
file changed, insertions(+), deletions(-)
delete mode abc.c
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
无文件要提交,干净的工作区
ubuntu@myubuntu:~/joe/learngit$ ls
readme.txt
//第二种方法rm file
ubuntu@myubuntu:~/joe/learngit$ ls
ab.c readme.txt
ubuntu@myubuntu:~/joe/learngit$ rm ab.c
ubuntu@myubuntu:~/joe/learngit$ ls
readme.txt
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add/rm <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动) 删除: ab.c 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$ git add ab.c
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区) 删除: ab.c ubuntu@myubuntu:~/joe/learngit$

git commit -m "del ab.c"

[master 0ad1dfe] del ab.c
file changed, insertions(+), deletions(-)
delete mode ab.c
ubuntu@myubuntu:~/joe/learngit$ git status
位于分支 master
无文件要提交,干净的工作区

Git学习笔记(3)——撤销修改和文件的删除的更多相关文章

  1. 【Git学习笔记】撤销修改

    工作区下的.git文件夹其实是Git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为 stage 的暂存区,还有Git为我们自动创建的第一个分支 master ,以及指向master的一个 ...

  2. Git学习笔记三--管理修改、撤销修改、删除文件

    1.管理修改 什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git ...

  3. Git学习笔记05-撤销修改

    使用 git checkout -- file可以撤销工作区的修改 一种是修改后还没有放到暂存区,撤销修改回到和版本库一模一样的状态 lesson.txt文件已经提交到版本库了,内容如图. ​ 修改一 ...

  4. Git学习笔记04-管理修改

    Git跟踪并管理的是修改,而非文件.新增文件,修改一行,删除一点,都算是修改. 在.git工作区新增一个文件,test.txt,输入test git ...然后git add ​ ​ add之后修改t ...

  5. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

  6. GIT学习笔记(2):时光机穿梭与远程仓库

    GIT学习笔记(2):时光机穿梭与远程仓库 撤销操作 1.GIT如何跟踪修改 在我们修改了代码内容后,执行了git add和git commit命令来将其交由Git进行版本控制.我们前面举的例子是这样 ...

  7. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  8. Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  9. GIT学习笔记(1):创建版本库

    GIT学习笔记(1):创建版本库 创建版本库 1.创建合适目录并初始化为仓库 版本库即需要交由Git进行版本控制的目录,其下所有文件的修改.删除,Git都能跟踪还原. 说明:初始化后,当前目录下会多出 ...

随机推荐

  1. js二维数组与字符串

    1. 二维数组:数组中的元素,又引用了另一个数组对象 何时使用:只要保存横行竖列的数据, 具有上下级包含关系的数据, 创建二维数组: 1. var arr=[]; col arr[0]=[" ...

  2. java TreeMap用法

    转自:http://huchenqiang90.blog.163.com/blog/static/11250080020101025956498/ 最近工作遇到需要按一个model中不同的列进行排序的 ...

  3. 我与solr(六)--solr6.0配置中文分词器IK Analyzer

    转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无 ...

  4. <Oracle Database>物理结构

    物理结构 Oracle物理结构包含了数据文件.日志文件和控制文件 数据文件 每一个Oracle数据库有一个或多个物理的数据文件.一个数据库的数据文件包含全部数据库数据.数据文件有下列特征: 一个数据文 ...

  5. python socket server源码学习

    原文请见:http://www.cnblogs.com/wupeiqi/articles/5040823.html 这里就是自己简单整理一下: #!/usr/bin/env python # -*- ...

  6. 第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用

    今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.spl ...

  7. Ajax异步调用Controller的Return JsonResult生成下拉列表

    @using System.Web.Optimization; @{ Layout = null; } <!DOCTYPE html> <html> <head> ...

  8. 【C-运算符】

    一.基本运算符 (1)赋值运算符:= a=2002;    //将值2002赋给变量a,动作从右到左 赋值运算左边必须指向一个存储位置(变量名——指针) (2)加法.减法运算符:+.—(二元或双目运算 ...

  9. IO-02. 整数四则运算(10)

    本题要求编写程序,计算2个正整数的和.差.积.商并输出.题目保证输入和输出全部在整型范围内. 输入格式: 输入在一行中给出2个正整数A和B. 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺 ...

  10. cmd输出的日志里有中文乱码的解决办法

    在命令行使用adb logcat命令直接输出日志中文内容显示乱码,原因是中文系统中cmd命令行窗口默认的编码是GBK,而LogCat打印的日志是UTF-8编码,所以adb logcat命令输出的中文内 ...