文件相关操作

修改readme.txt文件,执行 git status 命令查看当前仓库状态

git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add ..." 更新要提交的内容)
(使用 "git checkout -- ..." 丢弃工作区的改动)

修改: redme.txt

未跟踪的文件:
(使用 "git add ..." 以包含要提交的内容)

redme.txt~

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

使用git diff查看修改了什么内容,即difference

jack@Aspire:~/git$ git diff
diff --git a/redme.txt b/redme.txt
index 394552f..4e50204 100644
--- a/redme.txt
+++ b/redme.txt
@@ -1 +1,2 @@
-This is my first Git test.
+This is my first Git file. //内容由test改为了file

然后执行

git add readme.txt

git comment -m "add something"

版本回退

*git log 命令查看历史记录
commit 2bf289cac7af933232575719f0a05548de2d92eb
Author: battleblock jackdirectcn@outlook.com
Date: Wed Sep 16 22:30:35 2015 +0800
git

commit aa458f20559aa148b72f28f61096d7efe54952d1
Author: battleblock jackdirectcn@outlook.com
Date: Mon Sep 14 21:18:58 2015 +0800
test

commit 7b68b6f797a38b7fe2af70307e22a6008dfdf7a5
Author: battleblock jackdirectcn@outlook.com
Date: Mon Sep 14 20:38:35 2015 +0800

*git log --pretty=oneline显示较少信息(commin id版本号)
jack@Aspire:~/git$ git log --pretty=oneline
2bf289cac7af933232575719f0a05548de2d92eb git
aa458f20559aa148b72f28f61096d7efe54952d1 test
7b68b6f797a38b7fe2af70307e22a6008dfdf7a5 write a readme file

回退HEAD 表示当前版本,上一个版本为HEAD^ 上100个版本为HEAD~100
git reset --hard HEAD^回退到上一个版本

jack@Aspire:~/git$ git reset --hard HEAD^
HEAD 现在位于 aa458f2 test
cat readme命令查看内容

返回到现在版本

git reset --hard 版本号
jack@Aspire:~/git$ git reset --hard 2bf289
HEAD 现在位于 2bf289c git

git reflog查看每一次命令

小结

HEARD指向当前版本,Git可以在历史版本间来回穿梭,命令为git reset --hard commit id
穿梭前用git log查看提交历史,确定回退到哪个版本
*重返未来,用git reflog查看命令历史

撤销修改

修改了文件,但还未用git add命令提交,可用git checkout -- readme.txt
readme.txt自修改后还没有被放到暂存区,撤销修改就回到原来的状态;
readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态

修改了文件并用git add提交到到暂存区
可用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

git add readme.txt
git reset HEAD readme.txt
重置后撤出暂存区的变更:
M readme.txt
D redme.txt

小结

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库

删除文件

添加一个新文件test.txt到Git并且提交
git add test.txt
git commit -m "add test.txt"
在维恩件管理器中删除该文件或用rm 命令删除
此时用git status命令查看当前状态

1.从版本库中删除该文件
git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
rm test.txt
2.恢复误删文件
git checkout -- test.txt

Git学习笔记 第二章的更多相关文章

  1. 《DOM Scripting》学习笔记-——第二章 js语法

    <Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...

  2. The Road to learn React书籍学习笔记(第二章)

    The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...

  3. [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”

    [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...

  4. GIT学习笔记——第一章

    git之vim编辑器退出命令 # 学习笔记 张文军微博主页  张文军码云主页   张文军新浪云主页  张文军博客主页 ## 刚学习git,好多东西没接触过,进入vim后不知道如何出来了,网上找了很多都 ...

  5. [HeadFirst-JSPServlet学习笔记][第二章:高层概述]

    第二章:高层体系结构 容器 1 什么是容器? servelet没有main()方法.它们受控于另一个Java应用,这个Java应用称为容器(Container) Tomcat就是这样一个容器.Web服 ...

  6. c#高级编程第七版 学习笔记 第二章 核心c#

    第二章 核心C# 本章内容: 声明变量 变量的初始化和作用域 C#的预定义数据类型 在c#程序中使用条件语句.循环和跳转语句执行流 枚举 名称空间 Main()方法 基本的命令行c#编译器选项 使用S ...

  7. 《Python基础教程(第二版)》学习笔记 -> 第二章 列表和元组

    本章将引入一个新的概念:数据结构. 数据结构是通过某种方式阻止在一起的数据元素的集合,这些数据元素可以是数字或者字符,设置可以是其他数据结构. Python中,最基本的数据结构是序列(Sequence ...

  8. Git学习笔记 --第一章

    本系列学习笔记参考廖雪峰Git教程 安装Git Linux平台 Ubuntu/Debian命令:sudo apt-get install git 其他版本  Git官网下载源码,然后解压,依次输入:. ...

  9. Java 学习笔记 ------第二章 从JDK到IDE

    本章学习目标: 了解与设定PATH 了解与指定CLASSPATH 了解与指定SOURCEPATH 使用package与import管理类别 初步认识JDK与IDE的对应关系 一.第一个Java程序 工 ...

随机推荐

  1. keil uvision4不能显示中文

    打开编辑-配置 选择字体和颜色如下图 去掉右边 在注释中使用颜色 就可以了

  2. vue_02 开发过程中的问题记载

    1.package.json 运行 npm start 执行的是npm run  dev 实际上执行的是“dev” : node build/dev-server.js这一条 跑的是build目录下d ...

  3. Swift中的反射

    原文:http://www.cocoachina.com/applenews/devnews/2014/0623/8923.html Swift 事实上是支持反射的.只是功能略弱. 本文介绍主要的反射 ...

  4. 【数据库】事务,ACID,CAP和一致性

    什么是事务 事务是指由一系列数据库操作组成的一个完整的逻辑过程,这个过程中的所有操作要么都成功,要么都不成功.比如:常见的例子就是银行转账的例子,一次转账操作会包含多个数据库操作,而这些数据库操作需要 ...

  5. oracle11gR2 手工创建基于asm存储的oracle实例

    http://www.cnblogs.com/beanbee/archive/2012/09/22/2697689.html使用命令行手工建立Oracle11gR2数据库 通过命令行建立一个数据库可以 ...

  6. javascript获取指定区间范围随机数的方法

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code //获取指定区间范围随机数,包括lowerValue和upperValue funct ...

  7. 30个你 “ 不可能全部会做 ” 的javascript题目

    1,以下表达式的运行结果是: ["1","2","3"].map(parseInt) A.["1","2&qu ...

  8. EXCEL这样根据某单元格的内容来改变整行颜色

    1.选择你需要改变颜色的单元格列数,然后打开“格式”--“条件格式”: 2.选择“公式”一项,在后面输入=$L1=2050,然后点开下面的“格式”按钮设置好格式. 3.基本上就OK了,注意在输入公式的 ...

  9. Python 扩展插件

    扩展插件 我下载的本版自带 pip下载工具 cmd-pip 下载插件 pip install HTMLParser 如果提示版本问题,更新PIP 别用开始里面的CMD 使用管理者权限 请注意差别 输入 ...

  10. JS进阶之---基本数据类型,引用类型,内存空间

    一.内存空间: 为了便于理解,我们暂且先将Js的内存分为栈内存和堆内存. JavaScript具有垃圾自动回收机制,内存的分配与回收都完全实现了自动管理.所以我们在开发时一般会忽视内存空间的问题.但是 ...