热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Git关于文件的状态

一、自述在粗略学习完Git教程,特别是对分支管理这一章节的学习,有点力不从心,感觉学习知识优点杂,所有特地在写下这篇文章,弄清楚这其中涉及的知识点。二、gitstatus的使用1、

一、自述

  在粗略学习完Git教程,特别是对分支管理这一章节的学习,有点力不从心,感觉学习知识优点杂,所有特地在写下这篇文章,弄清楚这其中涉及的知识点。

二、git status的使用

1、将learngit文件夹变为仓库后,第一次使用git status查看仓库状态

1 $ git status
2 On branch master  一个主分支master
3 
4 No commits yet  还没有提交过
5 
6 nothing to commit (create/copy files and use "git add" to track)  没有提交的内容(创建/复制文件并使用“git add”进行跟踪)

2、创建文件readme.txt,写入内容Hello world!,第二次使用git status查看仓库状态

 1 $ git status
 2 On branch master
 3 
 4 No commits yet
 5 
 6 Untracked files:  没有追踪的文件
 7   (use "git add ..." to include in what will be committed)  使用git add 去添加它,并提交
 8 
 9         readme.txt  文件名
10 
11 nothing added to commit but untracked files present (use "git add" to track)  
没有添加的内容供提交,但是目前没有添加的文件可以使用git add来追踪

 此时此刻,Git没有对readme.txt文件进行管理的权限(没有进行add,也就是追踪,记录到暂存区)

3、添加文件到暂存区,第三次使用git status来查看仓库状态

1 $ git status
2 On branch master
3 
4 No commits yet
5 
6 Changes to be committed:  已暂存、已提交(暂存区)
7   (use "git rm --cached ..." to unstage)  使用“git rm--cached…”来取消存储
8 
9         new file:   readme.txt

4、修改readme.txt,增加一行Hello Git!,第四次使用git status查看仓库状态

 1 $ git status
 2 On branch master
 3 
 4 No commits yet
 5 
 6 Changes to be committed:     保存的内容为Hello world!
 7   (use "git rm --cached ..." to unstage)
 8 
 9         new file:   readme.txt
10 
11 Changes not staged for commit:
12   (use "git add ..." to update what will be committed)    更新提交
13   (use "git checkout -- ..." to discard changes in working directory)  可以丢弃工作区的修改
14 
15         modified:   readme.txt  修改过的文件

5、添加文件到暂存区,第五次使用git status来查看仓库状态

1 $ git status
2 On branch master
3 
4 No commits yet
5 
6 Changes to be committed:
7   (use "git rm --cached ..." to unstage)
8 
9         new file:   readme.txt

6、提交文件到本地库,第六次使用git status来查看仓库状态

1 $ git status
2 On branch master
3 nothing to commit, working tree clean  工作区为空(工作区文件内容与版本库一致)

三、撤销修改

为了方便学习,重新配置仓库,对仓库进行初始化(readme.txt文件内容只有一句,Hello world!,没有add,也没有commit)

1、对文件进行add,然后增加内容Hello Git!,查看状态

 1 $ git status
 2 On branch master
 3 
 4 No commits yet
 5 
 6 Changes to be committed:
 7   (use "git rm --cached ..." to unstage)
 8 
 9         new file:   readme.txt
10 
11 Changes not staged for commit:
12   (use "git add ..." to update what will be committed)
13   (use "git checkout -- ..." to discard changes in working directory)  可以看见这句话

使用命令git checkout -- 退回到暂存区的状态

 

1 $ git checkout -- readme.txt
2 $ cat readme.txt
3 Hello world!

 

2、对文件进行add,查看状态

1 $ git status
2 On branch master
3 
4 No commits yet
5 
6 Changes to be committed:
7   (use "git rm --cached ..." to unstage)
8 
9         new file:   readme.txt

要想撤销暂存区的内容使用以下命令:

1 $ git reset HEAD readme.txt
2 fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
3 Use '--' to separate paths from revisions, like this:
4 'git  [...] -- [...]'

竟然会出错,不科学啊!原来是这个文件没有提交过,也就是没有进行commit,再次尝试。

先将有Hello world!文件进行提价,再次进行操作。

1 $ git reset HEAD readme.txt
2 Unstaged changes after reset:
3 M       readme.txt
4 
5 $ git checkout -- readme.txt  这一步必须要有
6 
7 $ cat readme.txt
8 Hello world!

四、删除文件

1、手动删除了readme.txt文件,可以恢复

$ rm readme.txt

$ ll
total 0


$ git checkout -- readme.txt  将暂存区的文件恢复到工作区

$ ll
total 1
-rw-r--r-- 1 86173 197609 13 8月   7 12:00 readme.txt

2、手动删除了readme.txt文件,并且删除了暂存区的文件

 1 $ rm readme.txt
 2 
 3 $ ll
 4 total 0
 5 
 6 $ git rm readme.txt
 7 rm 'readme.txt'
 8 
 9 
10 $ git reset HEAD readme.txt    将版本库里的文件恢复到暂存区
11 Unstaged changes after reset:
12 D       readme.txt
13 
14 $ ll
15 total 0
16 
17 $ git checkout -- readme.txt  将暂存区的文件恢复到工作区
18 
19 $ ll
20 total 1
21 -rw-r--r-- 1 86173 197609 13 8月   7 12:06 readme.txt

 


推荐阅读
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文介绍了在PostgreSQL中批量导入数据时的优化方法。包括使用unlogged表、删除重建索引、删除重建外键、禁用触发器、使用COPY方法、批量插入等。同时还提到了一些参数优化的注意事项,如设置effective_cache_size、shared_buffer等,并强调了在导入大量数据后使用analyze命令重新收集统计信息的重要性。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 在加载一个第三方厂商的dll文件时,提示“找不到指定模块,加载失败”。由于缺乏必要的技术支持,百思不得期间。后来发现一个有用的工具 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 初始化初始化本地空版本库,仓库,英文名repositorymkdirtest&&cdtestgitinit克隆项目到本地gitclone远程同 ... [详细]
  • 先记住几个专用名词,如下:Workspace:工作区IndexStage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库#在当前目录新建一个G ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有