.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库的详细解释和应 ...
随机推荐
- http与https详解
1.http HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准.HTTP是一个基于TC ...
- 在线XML格式化工具
在线XML格式化工具可以帮助您轻松格式化混乱的XML代码.只需将您的XML代码复制并粘贴到文本框中,工具会自动对代码进行缩进.对齐和添加空格等操作,使代码看起来更加整洁和专业. 在线XML格式化工具
- echarts 各种特效图
饼图标签展示数值 配置项: option = { title: { text: '项目时间分布', left: 'center' }, tooltip: { trigger: 'item', form ...
- java 8 stream toMap问题
最近使用java的stream功能有点多,理由有2: 1)少写了不少代码 2)在性能可以接受的范围内 在巨大的collection基础上使用stream,没有什么经验.而非关键业务上,乐于使用stre ...
- CentOS上安装telnet
客户端 yum -y intall telnet 服务端 yum -y install xinetd #telnet服务依赖于xinetd yum -y install telnet-server # ...
- Java解析微信获取手机号信息
在微信中,用户手机号的获取通常是通过微信小程序的getPhoneNumber接口来实现的.这个接口允许用户在授权后,将加密的手机号数据传递给开发者.由于隐私保护,微信不会直接提供用户的明文手机号,而是 ...
- ACPI Table 与 Device Tree
背景 在分析Linux内核驱动的时候,有时候会看到一些acpi字样的接口. 之前一直没搞明白ACPI是什么,现在知道了. Reference : https://www.cnblogs.com/jun ...
- Linux C 读写超过2G的大文件 注意事项
背景 在项目中做大文件的增量读写,遇到了问题: fopen : Value too large for defined data type. 习惯性地根据这个提示查阅的有关资料显示: 1)工具链太老了 ...
- selenium窗口之间的切换
import time from selenium.webdriver import Edge from selenium.webdriver.common.by import By from sel ...
- Ubuntu20.04之Nvidia驱动安装
参考:https://blog.csdn.net/xiaokedou_hust/article/details/82187860,实际操作时和该博文有些出入,故作优化. s1.连接wifi,打开终端. ...