我正在试图找出什么是“本地存储库”与我正在处理的本地文件,在文件系统中看到的(在其他源控件工具中称为“工作空间”)。有关进一步说明:请说我的本地代码位于:c:\ users \ A \ documents \ GitHub \。更改其中一个文件后,我可以将更改提交到我的“本地存储库”中的主分支(当前是主服务器) - “本地存储库”实际位于何处?
c:\users\A\ documents\GitHub
的存储库位于一个隐藏的子目录c:\users\A\ documents\GitHub\.git
中。
您可以在"Discussion" section of the git man page中获得更多详细信息:
Git项目通常包含一个工作目录,顶层有一个“.git”子目录。
(Windows中的隐藏文件夹:在dir /AH
中执行c:\users\A\ documents\GitHub
查看)
.git
目录包含一个表示项目完整历史记录的压缩对象数据库,一个“索引”文件,它将该历史记录链接到工作树的当前内容,并命名指向该历史记录的指针,如标记和分支头。对象数据库包含三种主要类型的对象:blob,用于保存文件数据;树,指向blob和其他树来构建目录层次结构;和提交,每个引用一个树和一些父提交。
您可以使用--git-dir
选项或GIT_DIR
环境变量更改(本地存储库的)默认位置。
我有recently proposed that in a Go development environment。
本地存储库位于您的计算机中。当git推送您的更改时,您的计算机上的本地更改将在Gothic中的远程存储库中更新。
如上面Roland Smith所述,本地存储库数据存储在存储库文件夹(本例中为GitHub)的.git文件夹中。
为了进一步了解,我们来检查该文件夹的内容。
$ ls -C .git
COMMIT_EDITMSG MERGE_RR config hooks info objects rr-cache
HEAD ORIG_HEAD description index logs refs
我不会描述文件夹中的所有项目。但感兴趣的文件夹是objects
文件夹。如果检查对象文件夹的内容,
$ ls -C .git/objects
09 24 28 45 59 6a 77 80 8c 97 af c4 e7 info
11 27 43 56 69 6b 78 84 91 9c b5 e4 fa pack
它包含许多以两个字符命名的文件夹。存储在git中的对象的前两个字母sha1 hash是目录名。
我不打算描述如何生成这些目标文件。有一个good guide from GIT为此。
提示:如果您想了解.git文件夹中其他文件的更多详细信息,请查看http://gitready.com/advanced/2009/03/23/whats-inside-your-git-directory.html