本文紧接前文:

.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. StringRedisHelper

    @Slf4j @Service public class StringRedisHelper { private StringRedisTemplate redisTemplate; @Autowir ...

  2. 一行超长日志引发的 “血案” - Containerd 频繁 OOM 背后的真相

    案发现场:混沌初现 2024年6月10日,本应是平静的一天.但从上午 9 点开始,Sealos 公有云的运维监控告警就开始不停地响.北京可用区服务器节点突然出现大量 "not ready&q ...

  3. Azure Storage Blob 启用sftp协议支持

    背景 我这边需要给前端同学一个上传静态文件的地方,比如js.css.图片.icons等等,前端上传后直接在项目中:我这边用的是Azure Storage blob:为了单独分配权限,我这边打算启用SF ...

  4. 高通SOC启动流程

    背景 开始接手高通开发的有关工作,为了调试底层驱动,因此有必要了解高通平台上电启动的流程是怎么样的. 以 MSM8953 为例子. MSM:mobile station modems,移动基带处理器, ...

  5. 多核处理器与MP架构

    多核处理器也称片上多核处理器(Chip Multi-Processor,CMP). 多核处理器的流行 多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度会产 ...

  6. IEC103设备数据 转 IEC61850项目案例

    目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 配置VFBOX网关采集103设备数是 2 5 用IEC61850协议转发数据 4 6 网关使用多个逻辑设备和逻辑节点的方法 ...

  7. 在VisualStudio中WPF应用程序在打开窗体界面设计时报错<发生了未经处理的异常>的解决方法

    在网上找了一个wpf的开源项目,在打开窗体,点击设计的时候,提示错误信息如下 System.Resources.MissingSatelliteAssemblyExceptionThe satelli ...

  8. 韦东山freeRTOS系列教程之【第七章】互斥量(mutex)

    目录 系列教程总目录 概述 7.1 互斥量的使用场合 7.2 互斥量函数 7.2.1 创建 7.2.2 其他函数 7.3 示例15: 互斥量基本使用 7.4 示例16: 谁上锁就由谁解锁? 7.5 示 ...

  9. VulnHub_DC-5渗透流程

    DC-5 主机探测 nmap 192.168.157.0/24 访问网站 探测网站得知是Nginx 目录扫描 在Contact处可以提交东西,抓个包,发现在thankyou.php界面时间年份会变,应 ...

  10. DeepViT:字节提出深层ViT的训练策略 | 2021 arxiv

    作者发现深层ViT出现的注意力崩溃问题,提出了新颖的Re-attention机制来解决,计算量和内存开销都很少,在增加ViT深度时能够保持性能不断提高 来源:晓飞的算法工程笔记 公众号 论文: Dee ...