网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

系统工具团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 工具 > 系统工具 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

通过 .git深入理解功能强大的Git工具的构成

文章来源:重庆软件开发 发布时间:2020-02-14 12:46:34 围观次数:
分享到:

摘要:不仅要学习如何在Git中使用commit和push。 如果我们真的可以花时间了解Git的组成,我们将避免许多不必要的麻烦。通过 git深入理解功能强大的Git工具的构成 。

 不仅要学习如何在Git中使用commit和push。如果我们真的可以花时间了解Git的组成,我们将避免许多不必要的麻烦。接下来通过 .git深入理解功能强大的Git工具的构成。


研究.git目录

 

 通过git init创建git存储库时,git会创建一个.git目录。 该目录包含使git工作所需的所有信息。 简而言之,如果您不想在项目中继续使用git,只需删除.git目录并保留项目文件即可。 但是为什么这样可以呢?

 这是您第一次提交后的.git文件夹的样子:

blob.png

 config (配置)

  该文件包含您的存储库配置,例如远程URL,您的电子邮件和用户名。 每次您在控制台中使用git config ...时,它都会在此处影响。

  description(描述)

  由gitweb(github的前身)用来显示存储库的描述。

  hooks (钩子)

  这是一个有趣的功能。  Git提供了一组脚本,这些脚本可以在每个有意义的Git阶段自动运行。 这些脚本称为钩子,可以在提交,变基和提取操作之前和之后运行。 脚本预示了它的时机。 例如,我们可以编写pre-push作为挂钩,以在推送代码之前进行检查。

  info (信息)

  您可以将不想由git管理的文件记录到.gitignore文件中。 排除文件意味着不希望共享文件。 例如,如果您不想共享自己的IDE自定义配置,只需将其添加到.gitignore文件即可。


提交内容包括什么?


  每次创建文件并对其进行跟踪时,git都会将文件压缩并存储在其自己的数据结构中。 压缩的对象将具有唯一的名称和哈希值,并将存储在对象目录中。

  在研究对象目录之前,我们必须了解提交的含义。 您可能会说,提交是当前工作目录的快照,但不仅限于此。

  实际上,当您提交时,git分两步为您的工作目录创建快照:

  如果文件中没有任何变化,git只会将压缩文件(哈希值)添加到快照中。

  如果文件更改,git压缩它并将其存储在对象文件夹中。 最后,将此压缩文件的名称(哈希值)添加到快照中。

  这里给出了一个简化的过程。 实际上,整个过程有点复杂。 在以后的文章中将对此进行详细描述。

  创建快照后,将对其进行压缩并以哈希值命名。 那么这些压缩对象在哪里存在? 它们存储在对象文件夹中。

blob.png

这是创建一个空文件1.txt并提交后 object文件夹的外观。 请注意,如果文件哈希为“ 4cf44f1e ...”,则git会将其存储在“ 4c”子目录中,并将其命名为“ f44f1 ...”。 这个小技巧将/objects目录的数量减少到少于255。

  您需要牢记的是,提交包含四个部分:

  工作目录快照名称(哈希值)。

  评论/注释。

  提交者信息。

  提交的哈希值。

  如果我们解压缩提交的文件:

blob.png

得到以下内容:

blob.png

 正如预期的那样,我们看到了快照的哈希值,作者信息和提交的评论。

 有两个非常重要的事情:

 不出所料,快照“ 86550 ...”的哈希也是一个对象,您可以在对象文件夹中找到它。

 因为这是第一次提交,所以没有提交的哈希。

 那么,快照中存储了什么?

blob.png

 我们找到之前存储的最后一个对象,它也是快照中唯一的对象。 它是一个Blob对象,这是另一个知识点,这里不再讨论。


分支,标签,HEAD都一样


  您现在已经知道,可以使用正确的哈希值获得git中的所有内容。 现在,让我们关注HEAD。 那么,HEAD是什么?

blob.png

  HEAD不是哈希。  HEAD可以理解为指向所使用分支顶部的指针。 让我们看一下refs / heads / master:

blob.png

  看起来熟悉吗? 这与我们的第一次提交相同。 这表明分支和标签不过是指向提交的指针。 这意味着,即使删除了要删除的分支和标记,它们指向的提交仍然存在,但是在删除后更难获得这些提交。 如果您想了解更多详细信息,可以通过git book学习。


总结

 

  您应该了解git 提交会“压缩”当前工作目录中的文件,并将其与其他信息一起存储在对象文件夹中。 如果您熟悉git,则将知道哪些文件将包含在提交中,哪些文件将不会提交。

  提交并不是指您的工作目录的快照,而是您要提交的文件的快照。  git在实际执行之前将要提交的文件存储在哪里? 它将它们存储在索引文件中。


本文由 重庆软件开发 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索: git Git工具 Git构成 重庆软件开发

上一篇:安全基线检查:检查操作系统,中间件和数据库,检查结果传输到一个服务端,服务端可视化展示
下一篇:AgentSmith-HIDS:高性能主机信息收集工具,可帮助安全研究人员构建自己的HIDS

热门资讯

鼠标向下滚动