## 本地库与中央库 Git在本地机器就可以进行版本控管的功能, 但Git更强大之处就是分布式。像传统的集中式版本控管工具一样: * 在远端服务器上安装一个Git版本库作为中央版本库(也称为远端库,或是服务端) * 本地库的改动可以集中的汇总到中央库。即保证了代码的稳定安全,也实现了协同开发。中央库的一般基于Linux系统搭建。 架构如下: ![](https://box.kancloud.cn/4c1570d1af87fd69cf86eeb40450ef6a_664x331.png) ## 中央库的管理 如果项目比较多,或者权限设置较复杂的状况下, 一般会借助一些管理工具对中央库进行管理。为了管理方便,大部分的管理工具基于Web进行管理。像: * Gitblit, http://www.gitblit.com/ . 开源,使用Java开发的。一般是小型的团队使用。 * bitbucket,原名Stash, https://bitbucket.org/. 有企业版,也有免费版(5人以下免费,待考)。 如果缺少服务器资源,或者觉得自己搭建中央服务器比较麻烦的话, 现在网络上有很多在线的中央库,注册一个帐号就可以了, bitbucket就有提供在线版。另外比较知名的还有Github, Gitlab。Gttlab也有提供自行安装的软件。 * GitHub https://github.com/ * GitLab: https://gitlab.com/ * BitBucket: https://bitbucket.org/ * Gitee: https://gitee.com/ ## 目录控管的初始化 #### 使用`git init `命令可以对目录添加版本管理。 * `git init` 会把当前目录进行版本管理, 会产生一个.git目录。并会把当前目录的文件作为工作区文件。 * `git init –bare` 创建的是一个空目录, 也会产生一个.git目录,但是没有工作用的文件。一般用作服务端库的初始化。目录名以.git结尾。这个目录也叫裸仓库。 需要注意: -使用 git init –bare创建的库,不会建立master的Branch。 -初次clone一个裸仓库的话, 使用git branch是找不到任何branch的(远程和本地的都没有,包括master). #### 使用`git clone`从其他仓库克隆,包含了工作目录。 git clone会自动和远程仓库建立联系。 除了git clone之外,如果是一个已经初始化的目录, 也可以通过git remote命令和其他的远程仓库建立联系。进行代码的检出和Push.