通过 .git深入理解功能强大的Git工具的构成
摘要:不仅要学习如何在Git中使用commit和push。 如果我们真的可以花时间了解Git的组成,我们将避免许多不必要的麻烦。通过 git深入理解功能强大的Git工具的构成 。
不仅要学习如何在Git中使用commit和push。如果我们真的可以花时间了解Git的组成,我们将避免许多不必要的麻烦。接下来通过 .git深入理解功能强大的Git工具的构成。
研究.git目录
通过git init创建git存储库时,git会创建一个.git目录。 该目录包含使git工作所需的所有信息。 简而言之,如果您不想在项目中继续使用git,只需删除.git目录并保留项目文件即可。 但是为什么这样可以呢?
这是您第一次提交后的.git文件夹的样子:
config (配置)
该文件包含您的存储库配置,例如远程URL,您的电子邮件和用户名。 每次您在控制台中使用git config ...时,它都会在此处影响。
description(描述)
由gitweb(github的前身)用来显示存储库的描述。
hooks (钩子)
这是一个有趣的功能。 Git提供了一组脚本,这些脚本可以在每个有意义的Git阶段自动运行。 这些脚本称为钩子,可以在提交,变基和提取操作之前和之后运行。 脚本预示了它的时机。 例如,我们可以编写pre-push作为挂钩,以在推送代码之前进行检查。
info (信息)
您可以将不想由git管理的文件记录到.gitignore文件中。 排除文件意味着不希望共享文件。 例如,如果您不想共享自己的IDE自定义配置,只需将其添加到.gitignore文件即可。
提交内容包括什么?
每次创建文件并对其进行跟踪时,git都会将文件压缩并存储在其自己的数据结构中。 压缩的对象将具有唯一的名称和哈希值,并将存储在对象目录中。
在研究对象目录之前,我们必须了解提交的含义。 您可能会说,提交是当前工作目录的快照,但不仅限于此。
实际上,当您提交时,git分两步为您的工作目录创建快照:
如果文件中没有任何变化,git只会将压缩文件(哈希值)添加到快照中。
如果文件更改,git压缩它并将其存储在对象文件夹中。 最后,将此压缩文件的名称(哈希值)添加到快照中。
这里给出了一个简化的过程。 实际上,整个过程有点复杂。 在以后的文章中将对此进行详细描述。
创建快照后,将对其进行压缩并以哈希值命名。 那么这些压缩对象在哪里存在? 它们存储在对象文件夹中。
这是创建一个空文件1.txt并提交后 object文件夹的外观。 请注意,如果文件哈希为“ 4cf44f1e ...”,则git会将其存储在“ 4c”子目录中,并将其命名为“ f44f1 ...”。 这个小技巧将/objects目录的数量减少到少于255。
您需要牢记的是,提交包含四个部分:
工作目录快照名称(哈希值)。
评论/注释。
提交者信息。
提交的哈希值。
如果我们解压缩提交的文件:
得到以下内容:
正如预期的那样,我们看到了快照的哈希值,作者信息和提交的评论。
有两个非常重要的事情:
不出所料,快照“ 86550 ...”的哈希也是一个对象,您可以在对象文件夹中找到它。
因为这是第一次提交,所以没有提交的哈希。
那么,快照中存储了什么?
我们找到之前存储的最后一个对象,它也是快照中唯一的对象。 它是一个Blob对象,这是另一个知识点,这里不再讨论。
分支,标签,HEAD都一样
您现在已经知道,可以使用正确的哈希值获得git中的所有内容。 现在,让我们关注HEAD。 那么,HEAD是什么?
HEAD不是哈希。 HEAD可以理解为指向所使用分支顶部的指针。 让我们看一下refs / heads / master:
看起来熟悉吗? 这与我们的第一次提交相同。 这表明分支和标签不过是指向提交的指针。 这意味着,即使删除了要删除的分支和标记,它们指向的提交仍然存在,但是在删除后更难获得这些提交。 如果您想了解更多详细信息,可以通过git book学习。
总结
您应该了解git 提交会“压缩”当前工作目录中的文件,并将其与其他信息一起存储在对象文件夹中。 如果您熟悉git,则将知道哪些文件将包含在提交中,哪些文件将不会提交。
提交并不是指您的工作目录的快照,而是您要提交的文件的快照。 git在实际执行之前将要提交的文件存储在哪里? 它将它们存储在索引文件中。
相关热词搜索: git Git工具 Git构成 重庆软件开发
上一篇:安全基线检查:检查操作系统,中间件和数据库,检查结果传输到一个服务端,服务端可视化展示
下一篇:AgentSmith-HIDS:高性能主机信息收集工具,可帮助安全研究人员构建自己的HIDS
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8872( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6288( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4301( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3858( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3505( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2536( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2261( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1995( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1842( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1775( 亮了