.gitignore文件的使用方法(学习总结版)—— .gitignore 文件的配合用法
本文紧接前文:
.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 文件的配合用法的更多相关文章
- 常见的文件上传方法有哪些?Ajax文件上传原理是什么?
Ajaxfileupload,Ajaxupload,JqueryUploadify无刷新式的文件上传,在一个页面里嵌入一个Iframe,然后在Iframe使用原生的Post表单提交.
- linux几种快速清空文件内容的方法
linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo & ...
- (5)VS2010无法打开gl/glaux.h头文件的解决方法
方法:下载缺少的文件. 参考自:http://blog.csdn.net/delphiwcdj/article/details/6326586 下载源1:CSDN下载OpenGL 安装包所需文件下载: ...
- Python 文件对象和方法
Python文件对象和方法 1.打开和关闭文件 Python提供了必要的函数和方法进行默认情况下的文件基本操作,我们可以用file对象做大部分文件操作. open()方法 我们必须先用Python内置 ...
- python进阶之路9文件的处理方法
内容回顾 字典内置方法 1.类型转换 dict() 2.重要操作 get() d[key] = values 常用 pop() update() 键存在则修改键值对 键不存在则新增键值对 fromke ...
- S32DS中链接文件及启动代码学习
S32DS中链接文件及启动代码学习 一.链接文件 <Linker Files>文件夹中有linker_flash.ld文件和linker_ram.ld文件. Linker File称为链接 ...
- Radmin Server-3.5 完美绿色破解版(x32 x64通用) 第三版 + 单文件制作方法
Radmin Server v3.5 汉化破解绿色版(x32 x64通用) 第三版 下载链接: https://pan.baidu.com/s/1qYVcSQo 2016年7月8日更新第三版1.修复在 ...
- Git学习之忽略特殊文件.gitignore的配置
1.Mac中使用Git上传项目代码时忽略.DS_Store文件 简单的说Mac每个目录都会有个文件叫.DS_Store,它是用于存储当前文件夹的一些Meta信息.所以每次查看Git目录的状态,如果没有 ...
- 深入学习Python解析并解密PDF文件内容的方法
前面学习了解析PDF文档,并写入文档的知识,那篇文章的名字为深入学习Python解析并读取PDF文件内容的方法. 链接如下:https://www.cnblogs.com/wj-1314/p/9429 ...
- 深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
随机推荐
- python 方法调用另一个方法报错,捕获的异常只有message,优化为trackback捕获详细的报错信息
A方法加了try...expect... B方法也加了try....expect... B方法调用了A方法,A方法查找元素,找不到报超时异常,实际B捕获到的异常,只有message\n,没有办法看出是 ...
- LuBase 低代码开发框架介绍 - 可私有化部署
框架定位 面向开发人员,针对管理软件领域,对页面交互和通用功能进行高阶封装,逐步打造成平台型.生态型开发工具. 涓涓细流 ,汇聚成海,基于 PBC(组件式开发)开发理念,让功能模块的复用更简单. 让管 ...
- 记录用C#写折半查找算法实现
折半查找算法 前言 最近要考试了,重新回顾一下之前学的算法,今天是折半查找,它的平均比较次数是Log2 n 思想 给定一个有序数组A[0..n-1],和查找值K,返回K在A中的下标. 折半查找需要指定 ...
- Freertos学习:04-任务的调试函数
--- title: rtos-freertos-04-任务的调试函数 EntryName: rtos-freertos-04-task-debug date: 2020-06-22 08:49:06 ...
- NXP i.MX 8M Mini开发板规格书(四核ARM Cortex-A53 + 单核ARM Cortex-M4,主频1.6GHz)
1 评估板简介 创龙科技TLIMX8-EVM是一款基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高性能评估板,由核心板和 ...
- MES 与 PLC 的几种交互方式
在 MES 开发领域,想要从 PLC 获取数据就必须要和 PLC 有信号交互.高效准确的获取 PLC 数据一直是优秀 MES 系统开发的目标之一.初涉相关系统开发的工程师往往不能很好的理解 PLC 和 ...
- influxdb得导出与导入
转载请注明出处: 1.备份元数据 基本语法: influxd backup <path-to-backup> 备份元数据,没有任何其他参数,备份将只转移当前状态的系统元数据到path-to ...
- Linux如何安装PHPMyAdmin
1,我们要以root帐号登入 . 2,PHP支持模块安装.在CentOS操作系统安装完毕后,其实PHP支持模块并没有安装上去,如果想使用PhpMyAdmin,首先需要安装PHP支持模块,我们需要两个P ...
- leetcode简单(数组,字符串,链表):[1, 9, 13, 14, 20, 21, 26, 27, 35, 58]
目录 1. 两数之和 9. 回文数 13. 罗马数字转整数 14. 最长公共前缀 20. 有效的括号 21. 合并两个有序链表 26. 删除有序数组中的重复项 27. 移除元素 35. 搜索插入位置 ...
- oeasy教您玩转vim - 73 - # 映射map
映射map 回忆上次缩写的细节 这次了解到了:abbrivate缩写 可以定义缩写 :ab o1z oeasy 这里面还可以包括方向键.回车键之类的东西 可以定义到指定的模式 iab cab 查看 ...