Git版本库是在工作区根目录的.git目录中,如果直接删除工作区,会把版本库也同时删除。
说明:1、版本库A通过克隆操作创建克隆版本库B
2、版本库A可以通过PUSH(推送)操作,将新提交传递给版本库B
3、版本库A可以通过PULL(拉回)操作,将版本库B中的新提交拉回到自身A
4、同理版本库B
一、对等工作区
不使用–bare或–mirroe创建出来的克隆包括工作区的版本库,这两个版本库是对等的。
这两个工作区本质上没有区别,往往提交是在一个版本(A)中进行,另外一个(B)作为备份。
对于这种对等工作区模式,要实现版本库的同步,只能是备份库(B)执行git pull命令从源版本库(A)中拉回新的提交实现版本库同步。而不能执行git push命令从版本库(A)向版本库(B)执行推送操作。
命令:git clone <\repository><\directory>
将<\repository>指向的版本库创建一个克隆到<\directory>目录。相当于克隆版本库的工作区,文件都会检出,版本库位于工作区下的.git目录中。
例如:将工作区demo的版本库克隆到工作区demo-backup的版本库:
在源版本库(A)中生成一些提交(–allow-empty参数可以生成空提交):
不建议执行 git PUSH,从源版本库向备份版本库执行推送操作,出现一大堆提示:
建议执行git pull命令,从源版本库(demo工作区)中拉出最新提交:
注意:该命令是在备份工作区中执行的:
克隆生成裸版本库
裸版本库没有工作区,空间占用更小。
命令:git clone –bare <\repository> <\directory.git>
创建的克隆版本库不包括工作区,直接就是版本库的内容。这样的版本库称为裸版本库,以 .git 为后缀。
1、将版本库demo克隆到gitRepos/demo.git 。
克隆出来的demo.git目录就是版本库目录,不包含工作区:
2、查看demo.git中的内容,可以直接查看
3、在demo版本库中生成一些测试提交,可为空:
4、在demo版本库执行git push推送操作
4.1、不带参数执行命令,因为未设定上游远程版本库,因此会报错:
4.2、带有参数,执行推送成功:
5、查看demo.git版本库是否完成同步(直接在demo版本库中查看):
创建生成裸版本库
裸版本库不仅可以通过克隆的方式创建,还可以通过git init命令以初始化的方式创建。
1、创建一个空的裸版本库(直接在demo版本库中执行命令):
2、查看版本库的内容:
3、执行PUSH操作向新的版本库添加内容:
注意:demo-init.git版本库刚刚初始化,还没有任何提交,更没有分支,所有需要 master:master :
4、查看git-init.git版本库的提交:
5、在demo版本库中执行几次提交,在向demo-init.git推送push。此时就不用加参数 master:master: