Git使用40个16进制字符的SHA-1 Hash来唯一标识对象
Git的四种基本对象类型,组成了Git更高级的数据结构:
blobs: 每个blob代表一个(版本的)文件,blob只包含文件的数据,而忽略文件的其他元数据,如名字,路径格式等
trees: 每个tree代表了一个目录的信息,包含了此目录下的blobs,子目录(对应于子trees),文件名、路径等元数据。因此,对于有子目录的目录,git相当于存储了嵌套的trees。
commits: 每个commmit记录了提交一个更新的所有元数据,如指向的tree,父commit,作者、提交者、提交日期、提交日志等。每次提交都指向一个tree对象,记录了档次提交时的目录信息。一个commit可以有多个(至少一个)父 commits。
tags:tag用于给某个上述类型的对象指配一个便于开发者记忆的名字,通常用于某次commit
获取Git仓库的命令
git init git_test //初始化一个Git仓库 //创建了一个叫git_test 的仓库,并在你制定的目录下边建立了一个git_test文件夹。同时在文件夹中生成了.git。 git init --bare git_bare_test // 生成一个裸的仓库,它不带.git文件,也就是不带工作区。 git clone url //克隆项目
Git仓库的三个区域
1.working directory:工作区
2.staging area:暂存区
3.history repository:历史仓库(版本库)
- 从工作区中添加内容到暂存区。(add)
- 将暂存区的内容提交到版本库。 (commit)
- 从版本库中检出内容到工作区。
git add -u //所有跟踪文件中被修改过或已删除文件的信息添加到暂存区 git add -A //所有被跟踪文件与不被跟踪文件添加暂存区 git add -i //查看所有修改过或已删除文件 但没有提交的文件 git commit -m "提交的描述信息" git commit -a -m "提交的描述信息" git status //查看工作区、暂存区和版本库的差异情况 git rm a git commit -m "delete a file" git rm --cached a //删除暂存区的文件 git mv //git文件重命名或移动路径时使用命令