本文紧接前文:

.gitignore文件的使用方法(学习总结版)

=============================================

本文主要讨论前文中所说的一个操作,即: .gitignore 文件一般在创建代码库之初时创建,因为一旦符合被忽略条件的文件被提交到代码库后才创建 .gitignore 文件也不会影响已经提交到代码库中的文件。

针对这个问题网上有很多讨论,并且给这种问题起了一个名:“.gitignore规则不生效”,给出的方法为:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

其实这个方法并不会删除已经保存到版本库中的文件,该方法只是将暂存库(缓存库)中数据清除(该步操作为:git rm -r --cached . ),然后创建 .gitignore 文件,然后再把当前工作目录下的文件(此时.gitignore规则已生效)重新加入到暂存库中(该步操作为:git add . ),然后再将暂存库(缓存库)(此时的暂存库中文件为经过.gitignore过滤后的文件)提交到版本库中(该步操作为:git commit -m 'update .gitignore' )。

注意: .gitignore 文件只在将工作区文件加入到暂存区时才有效,或者说 .gitignore 文件只对 “ git add 文件 ”操作有效。

为了更好的理解上面说的这个操作就需要了解git的一些工作原理了。

---------------------------------------------------------------

Git的本地数据管理可以分为三个部分 :

工作区

暂存区

版本库

工作区是我们正常编辑文件的空间,也是我们平时可见的空间。暂存区和版本库中文件是不能编辑的,只有工作区中文件可以进行编辑。

暂存区,也叫缓存区,存放的是工作区中编辑好后准备提交到版本库中的文件。工作区的文件不能直接提交到版本库中而是需要先提交到暂存区中。工作区中的文件提交到暂存区就相当于把工作区中对应的文件进行copy复制到暂存区,这也就意味着在工作区中文件提交到暂存区后如果对工作区中相应文件进行修改也会造成和暂存区中文件内容不一致。如果工作区中文件内容与暂存区中文件内容不一致,而我们又希望暂存区中文件内容更新为工作区中文件内容,那么我们就需要手动将工作区对应的文件再次通过“ git add ”的方式加入到暂存区中,这样就相当于把工作区中更改内容后的文件再次copy并覆盖暂存区中的文件。

版本库,是Git中对文件最终存储的地方,只有保存到暂存区中的文件内容才可以提交到版本库中,一旦存入到版本库中就相当于将当时的暂存区中文件copy后存入版本库。每次将暂存区中内容通过“ git commit -m ” 的方式提交到版本库中都会对所提交的内容赋值一个提交号,并记录提交者的用户名、邮箱及提交日期,最近的一次提交内容为当前版本并由HEAD标志指向,历史提交版本可以通过提交时的保存信息及提交号来进行查找。提交到版本库中的文件是不允许撤回、不允许编辑的,是对文件的永久记录,即使有了新的一次commit提交也只是将指向上次提交的HEAD标志重新指向这次的提交,曾经的提交均作为历史记录进行保存。

对于工作区、暂存区、版本库的基本操作给出下图:

同步操作:

使两个区中对应文件内容保持一致。

文件的可编辑性:

只有工作区中的文件是可以编辑的。

工作区中文件与暂存区中文件的相互同步操作:

将工作区中文件同步到暂存区中:(操作结束后工作区和暂存区中该名称文件内容保持一致)

git add "文件名"

含义为:将工作区中的某个文件copy到暂存区中。如果暂存区中已存在同名文件但文件内容不同则对其进行覆盖操作,如果暂存区中同名文件内容也相同则不进行copy操作。

git rm "文件名"

含义为:工作区空间不存在某个文件,但是暂存区中存在这个文件,该操作将暂存区中存在的这个文件删除掉。

git rm -f "文件名"

含义为:不论工作区中是否存在该文件,都将暂存区中的这个文件删除掉,如果工作区中有这个同名文件则不论该文件是否与暂存区中文件内容相同均对其一并删除。

------------------------------------------

将暂存区中文件同步到工作区中:(操作结束后工作区和暂存区中该名称文件内容保持一致)

git restore "文件名"

含义为:不论工作区空间是否存在该文件,都将暂存区中存在的这个文件保存到工作区中,即使工作区中存在同名文件也进行覆盖操作。

======================================================

暂存区中文件与版本库中文件的相互同步操作:

将暂存区中文件保存到版本库中:(操作结束后暂存区和版本库中所有文件内容保持一致)

git commit -m  "提交历史记录信息"

含义为:将暂存区中的所有文件copy一份保存到版本库中。每一次commit操作都会被记录用户名、用户邮箱、commit时间以及一个唯一的commit编号,新的commit操作不会覆盖旧的commit操作,因此一旦文件被commit到版本库中就会一直保存的,并且在版本库中会使用一个HEAD标记来一直指向最新的commit文件内容。在使用git status查看暂存区和版本库中文件内容差别时都是指版本库中的HEAD标记指向的文件内容,即最新commit的文件内容。

将版本库中最新版本的文件(最近commit提交的HEAD所指向的文件)保存到暂存区中:(操作结束后暂存区和版本库中对应的指定文件内容保持一致)

git restore --staged "文件名"

含义为:将版本库中最近commit提交的HEAD所指向的对应文件copy到暂存库中。即使暂存库已存在这个文件或者暂存库中这个文件内容与版本库中内容不一致,该操作均会使用版本库中对应的文件覆盖暂存区中的文件。

=====================================================

对暂存区中的文件进行删除操作:

git rm --cached "文件名"

含义为:删除掉暂存区中的某个文件。

git rm --cached -r "文件夹名"

含义为:迭代删除掉暂存区中的某个文件夹及其下的文件。该种方式一般用于删除暂存区中的多个文件或有文件的文件夹。

=====================================================

 
 
 
 

为了更多的介绍下Git中的使用方法,给出下面的链接,关于具体使用例子的:

 

====================================================

如果某个文件已经加入到 .gitignore 文件中,这时我们是无法使用“ git add ”的方式来进行添加的,如果要强制添加该文件到暂存区则需要命令:“ git add -f 文件名”,如:

=====================================================

.gitignore文件的使用方法(学习总结版)—— .gitignore 文件的配合用法的更多相关文章

  1. 常见的文件上传方法有哪些?Ajax文件上传原理是什么?

    Ajaxfileupload,Ajaxupload,JqueryUploadify无刷新式的文件上传,在一个页面里嵌入一个Iframe,然后在Iframe使用原生的Post表单提交.

  2. linux几种快速清空文件内容的方法

    linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo & ...

  3. (5)VS2010无法打开gl/glaux.h头文件的解决方法

    方法:下载缺少的文件. 参考自:http://blog.csdn.net/delphiwcdj/article/details/6326586 下载源1:CSDN下载OpenGL 安装包所需文件下载: ...

  4. Python 文件对象和方法

    Python文件对象和方法 1.打开和关闭文件 Python提供了必要的函数和方法进行默认情况下的文件基本操作,我们可以用file对象做大部分文件操作. open()方法 我们必须先用Python内置 ...

  5. python进阶之路9文件的处理方法

    内容回顾 字典内置方法 1.类型转换 dict() 2.重要操作 get() d[key] = values 常用 pop() update() 键存在则修改键值对 键不存在则新增键值对 fromke ...

  6. S32DS中链接文件及启动代码学习

    S32DS中链接文件及启动代码学习 一.链接文件 <Linker Files>文件夹中有linker_flash.ld文件和linker_ram.ld文件. Linker File称为链接 ...

  7. Radmin Server-3.5 完美绿色破解版(x32 x64通用) 第三版 + 单文件制作方法

    Radmin Server v3.5 汉化破解绿色版(x32 x64通用) 第三版 下载链接: https://pan.baidu.com/s/1qYVcSQo 2016年7月8日更新第三版1.修复在 ...

  8. Git学习之忽略特殊文件.gitignore的配置

    1.Mac中使用Git上传项目代码时忽略.DS_Store文件 简单的说Mac每个目录都会有个文件叫.DS_Store,它是用于存储当前文件夹的一些Meta信息.所以每次查看Git目录的状态,如果没有 ...

  9. 深入学习Python解析并解密PDF文件内容的方法

    前面学习了解析PDF文档,并写入文档的知识,那篇文章的名字为深入学习Python解析并读取PDF文件内容的方法. 链接如下:https://www.cnblogs.com/wj-1314/p/9429 ...

  10. 深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

随机推荐

  1. babel 基础概念 & 从零到一写一个 babel 插件

    babel 基础概念 简单来说,做语法转换兼容的, 复杂一点的说,babel可以将我们写的 ES6+ 的Javascript语法转换为向后兼容的语法,以便能够在旧版本的浏览器或者其他环境运行. bab ...

  2. 跨域iframe 配置fullscreen权限

    在新版本的 Chrome 等浏览器中,默认情况下禁止了跨域 iframe 开启全屏的权限.在 iframe 中,我们通常使用 element.requestFullscreen() 方法来进行全屏展示 ...

  3. IDEA环境编译Spring源码

    一.下载源码 1.官网下载 官网地址 如下图 2.github git下载 github地址 如下图 3.gitee git下载(国内推荐使用) gitee地址 如图 查看对应的gradle版本 在下 ...

  4. MySql 表数据的增、删、改、查

    数据表的增.删.改.查 前言 在学习 MySql 一定少不了对数据表的增.删.改.查,下面将详细讲解如何操作数据表. 前面已经建好了表 customer 列表如下: 插入数据 插入数据可以使用 INS ...

  5. 正式开启全站HTTPS加密之旅

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 正式开启全站HTTPS加密之旅 日期:2017-7-14 ...

  6. 社会工程学——进行IP追踪

    如果目标对象有一个公开的邮箱,可以往这个邮箱地址发试探性的Email,然后看看该邮件是否有[回信],从而了解对象是否在线.(注:这招是社会工程学的基本伎俩) 说一个稍微高级点的邮件技巧--[不依赖回信 ...

  7. JAVA-poi导出excel到http响应流

    导出结果为excel是相对常见的业务需求,大部分情况下只需要导出简单的格式即可,所以有许多可以采用的方案.有些方案还是很容易实现的. 一.可用的解决方案 目前可以有几类解决方案: 字处理企业提供的解决 ...

  8. 如何在Spring Boot框架下实现高效的Excel服务端导入导出?

    前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...

  9. Kubernetes(一)Overview

    1. Kubernetes介绍 要了解Kubernetes,首先我们需要了解Container与Orchestration. Docker Docker的出现是为了解决:部署依赖.以及兼容性.以及繁琐 ...

  10. Linux内核:regmap机制

    背景 在学习SPI框架的时候,看到了有一个rtc驱动用到了regmap,本想通过传统方式访问spi接口的我,突然有点不适应,翻了整个驱动,愣是没有找到读写spi的范式:因此了解了regmap以后,才发 ...