記事のディレクトリ
すべてのGitのリポジトリはGitのリポジトリ、倉庫のバージョン情報を格納、構成情報の中核である「.git」ディレクトリを、持っています。今日は、私たちが秘密は「.git」ディレクトリを持っているものを見てみましょう。
ただ、倉庫「.git」ディレクトリを開き、あなたはそのようないくつかのファイルやフォルダがあるだろうことがわかります。
、HEADファイル
HEADファイルには、現在の作業ブランチを格納します。ファイルの中身を見てください:
これは、基準であるが、ここで、この基準点、点参考文献/ヘッド/このパスをマスターないREFの開始を表します。
そして枝を見て:
GitのHEADファイルは、現在のブランチを決定するために、この作品に基づいています。あなたが現在のブランチを切り替える場合は、このファイルの内容も変更されます。
二、レフリーフォルダ
頭
レフリー/ヘッド/マスター:私たちが知っている前のセクションからは、HEADファイルは実際にはパスで現在の作業ブランチを、保存します。だから、レフリーフォルダがやっている、と我々はそれをチェックアウトして中に入りました。来た.git /レフリー/ヘッドディレクトリには、私たちの現在の倉庫の二つの枝である二つのファイル、マスターとTEMPが存在することがわかりました。それぞれ、マスターおよび一時ファイルの内容を見てみましょう。
ハッシュの文字列に格納されているファイル。各文字列のハッシュ値は、実際のオブジェクトを指している、git cat-file -t 哈希值
あなたは注文のハッシュ値を指すオブジェクトの型を表示することができます。
結果は、コミット・ポイントのハッシュ値列がオブジェクト型であることを示しています。
注意,我在查看哈希值指向的对象类型的时候,并没有使用完整的哈希值,原来完整的哈希值是「783bbca61fea9dcd8e1b0ba3e7bb8cc8d5bb2a61」,而我只使用了这串哈希值的前几个字符「783bbca」,居然也能正常显示结果,原因是如果这前几个字符就已经是唯一的了,那么 Git 根据这几个字符也能找到相应的对象,而无需使用完整的哈希值。
而当我们查看分支时,
会发现当前 master 指向的也是哈希值为 783bbca 的这个 commit。temp 也是一样。由此可知,refs/heads 这个路径下存放的是每个分支当前指向的 commit 对象。
tags
refs 下面还有一个文件夹,叫 tags。
tag 相当于一个项目的里程碑,对于比较重要的 commit,比如项目发布 1.0 版本的时候,会给这个 commit 打上一个标签,也就是 tag。tags 这个文件夹下面就存放着仓库中所有的 tag,每一个 tag 文件都存放着一个哈希值,指向被打上标签的 commit 对象。
三、config 文件
config 文件存储着本地仓库的配置信息。查看一下该文件的内容:
这里面存放的是一些配置信息,如果我们把这个文件内容修改一下,比如,我把用户名改成 supermouse666,然后再去查看配置信息,会发现用户名已经变了。
反过来也一样,如果使用 Git 的命令修改本地仓库的用户名,那么这个文件内容也会发生改变。比如我把邮箱改成 [email protected]
四、objects 文件夹
図は、オブジェクトが時に倉庫より緩いオブジェクトファイルとき前記①の部分は特殊なパックフォルダ内に保存されたオブジェクト、および②一部で、その役割は、ある、フォルダ内に保存されたファイル、いくつかの子供たちをフォルダです、Gitが自動的に並べ替えを行います、これらのファイルは、パックフォルダに緩いオブジェクトをパッケージ化しています。
ただ、オブジェクトファイルを保管フォルダを開きます。
フォルダ名+ファイル名は、オブジェクトの種類を見て、ハッシュ値、オブジェクトのハッシュ値を生成します:
それは、BLOB型のオブジェクトである、というファイルオブジェクトを。あなたは使用することができgit cat-file -p 哈希值
、オブジェクトの内容を表示するには、このコマンドを。
私たちは、コードファイルの内容を参照してください私たちが提出したものを実際にすることができます。