"不能把鸡蛋放在一个篮子里",Git版本库目录与工作区在一起,因此存在一损俱损的问题.

2个版本库之间通过PULL和PUSH操作实现同步.
1.版本库A通过Clone操作创建版本库B
2.版本库A通过PUSH,将新的提交传递给版本B
3.版本库A通过PULL,将版本库B中的新提交拉回到自身(A).
4.版本库B通过PULL,将版本库A中的新提交拉回到自身(B).
5.版本库B通过PUSH,将新提交传递给版本库A.
git clone 命令实主要有如下三种用法:
- 用法1:git clone<repository> <directory>
- 用法2:git clone --bare <repository> <directory.git>
- 用法3:git clone --mirror <repository> <directory.git>
用法1将<repository>指向的版本库创建一个克隆到<directory>目录.目录<directory>相当于克隆版本库的工作区,文件都会检出,版本库位于工作区的.git目录中.
用法2与用法3创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库.一般约定俗成的裸版本库的目录名以.git为后缀,所以上面示例中将克隆出的版本库目录名写成<directory.git>
用法3区别于用法2在于用法3克隆出来的裸版库对上游版本库进行了注册,这样可以在裸版本库中使用git fetch命令和上游版本库进行持续同步.
一,对等工作区
不使用--bare或--mirror创建出来的克隆包含工作区,这样会产生两个包含工作区的版本库,这两个版本库是对等的.

这两个工作区没有本质区别,但是往往是在一个版本(A)中进行的.而(B)作为备份.对于对等工作区模式,版本库的同步只有一种可行的操作模式,就是备份(B)执行git pull命令从源版本库(A)中拉回新的提交实现版本同步,而不能从版本库A向版本库B执行git push实现同步.这是因为默认更新非裸版本库的当前分支是不被允许,因为这样会导致暂存区与工作区与推送至版本的新提交不一致.
二,克隆生成裸版本库
裸版本库没有工作区,所以可以直接通过push实现同步.

使用--bare参数克隆,就可以直接推送了 使用--bare 参数将demo版本克隆到/path/to/repos/demo.git然后可以在demo版本向克隆版本执行推送操作了.
三,创建生成裸版本库
裸版本库不仅可以通过克隆方式创建,还可以通过git init方式命令以初始化的方式创建.

git init用于初始化一个版本库,在目录path/to/repos/demo-init.git目录中创建一个空的裸版本库.
但是此时不能直接在A中执行git push 因为path/to/repos/demo-init.git版本刚刚初始化完成,没有任何提交,更不要说分支了.当执行git push时,如果没有指定推送的分支,而且当前的分支也没有注册到远程的某个分支,将检查远程分支是否有和本地相同的分支名,如果有则推送,否则推送失败,所以第一次执行推送要写的完整一些
到此这篇git clone在哪里(git clone bundle)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/23126.html