文件相关操作

修改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. elasticsearch使用bulk实现批量操作

    本篇文章提供ES原生批量操作语法及使用bulk批量操作文档.文章依旧提供语法,具体实现大家根据语法,在对应处进行替换即可 一.原生批量获取文档 1.获取指定文档值(1) 语法: GET /_mget ...

  2. ABAP 中JSON格式的转换与解析

    RT,JSON是当今十分流行的一种轻量数据格式,广泛地应用于各种数据交换场景中.本文会介绍一种比较简单的将ABAP中的数据转换为JSON格式的方法. (如果你是因为引号的问题搜索到了这篇文章,请直接拉 ...

  3. Markdown图片存储解决方法-利用阿里云OSS

    我们在用markdown写一些博客或者文章的时候,常常需要引用一些图片,一般都是找一个免费的图床上传,然后复制图片链接在我们的markdown文章中.类似像这样: 存在的隐患 一般的免费图片托管网站有 ...

  4. 分包收集 android 运行的 logcat 日志

    # -*- coding:utf-8 -*- import os import time from common import Common comm = Common() cmd = r'adb l ...

  5. call()和apply()

    call()和apply()方法类似,区别是,call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组. 当一个函数在其主体中使用 this 关键字时,可以通过使用 ...

  6. luogu P1858 多人背包

    嘟嘟嘟 既然让求前\(k\)优解,那么就多加一维,\(dp[j][k]\)表示体积为\(j\)的第\(k\)优解是啥(\(i\)一维已经优化掉了). 考虑原来的转移方程:dp[j] = max(dp[ ...

  7. gitlab 使用流程

    gitlab 使用流程 1. 开发人员写代码,开发产品. 2. 测试人员进行测试,如果发现bug, 填写 Issues - List - new issus 3. 开发人员修复bug, 从master ...

  8. typeof与instanceof的区别是什么?

    在javascript中,判断一个变量的类型可以用typeof (1) 数字类型.typeof返回的值是number.比如说:typeof(1),返回值是number (2) 字符串类型,typeof ...

  9. ssh linux免密登录。。。。生产共钥到另一台主机

    一.第一种方式: 1.ssh-keygen -t rsa -t : 加密方式 默认为rsa 可以省略不写 加密方式选 rsa|dsa 2.将 .pub 文件复制到目标机器的 .ssh 目录, 并 ca ...

  10. C++ 一个整数的二进制表示中1的个数

    想知道某一位是否为1,只需和当前位对应的2的幂进行按位与运算即可. 如下示例,可以知道第6位是1,同理可知其他位是否为1,累加就能得到1的个数: 10001001 00000000 int cnt = ...