版本库
创建一个版本库:
$git init
已初始化空的 Git 仓库于 /home/codemaxi/git_test/.git/
这样,一个空的版本库就创建好了,并在当前目录中创建一个叫 .git 的子目录。你可以用 ls -a 查看一下,并请注意其中的三项内容:
codemaxi@codemaxi-PC:~/git_test$ ls -l .git/
总用量 44
drwxrwxr-x 2 codemaxi codemaxi 4096 5月 23 16:01 branches
-rw-rw-r-- 1 codemaxi codemaxi 26 5月 23 22:08 COMMIT_EDITMSG
-rw-rw-r-- 1 codemaxi codemaxi 92 5月 23 16:01 config
-rw-rw-r-- 1 codemaxi codemaxi 73 5月 23 16:01 description
-rw-rw-r-- 1 codemaxi codemaxi 23 5月 23 16:01 HEAD
drwxrwxr-x 2 codemaxi codemaxi 4096 5月 23 16:01 hooks
-rw-rw-r-- 1 codemaxi codemaxi 190 5月 24 07:17 index
drwxrwxr-x 2 codemaxi codemaxi 4096 5月 23 16:01 info
drwxrwxr-x 3 codemaxi codemaxi 4096 5月 23 19:27 logs
drwxrwxr-x 17 codemaxi codemaxi 4096 5月 24 07:14 objects
drwxrwxr-x 4 codemaxi codemaxi 4096 5月 23 16:01 refs
codemaxi@codemaxi-PC:~/git_test$
- 一个叫 HEAD 的文件,我们现在来查看一下它的内容:
codemaxi@codemaxi-PC:~/git_test$ cat .git/HEAD
ref: refs/heads/master
codemaxi@codemaxi-PC:~/git_test$
我们可以看到,HEAD 文件中的内容其实只是包含了一个索引信息,并且,这个索引将总是指向你的项目中的当前开发分支(当前我们的开发分支就是主分支master)。
-
一个叫 objects 的子目录,它包含了你的项目中的所有对象,我们不必直接地了解到这些对象内容,我们应该关心是存放在这些对象中的项目的数据。关于 git 对象的分类,以及 git 对象数据库的说明,我们后面再来说。
-
一个叫 refs 的子目录,它用来保存指向对象的索引以及标签信息。
codemaxi@codemaxi-PC:~/git_test$ ls -l .git/refs/
总用量 8
drwxrwxr-x 2 codemaxi codemaxi 4096 5月 23 22:08 heads
drwxrwxr-x 2 codemaxi codemaxi 4096 5月 23 16:01 tags
codemaxi@codemaxi-PC:~/git_test$
具体地说,子目录 refs 包含着两个子目录叫 heads 和 tags,就像他们的名字所表达的意味一样:他们存放了不同的开发分支的头的索引, 或者是你用来标定版本的标签的索引。
master 是默认的分支,这也是为什么 .git/HEAD 创建的时候就指向 master 的原因,尽管目前它其实并不存在。 git 将假设你会在 master 上开始并展开你以后的工作,除非你自己创建你自己的分支。
这样一个本地的版本库就创建成功了。