## 本地库与中央库
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.
- 前言
- 第1章 概念篇
- 1.1 版本控管的概念与历史
- 1.2 Git概述
- 1.3 Git 安装
- 1.4 工作区、暂存区和版本库
- 1.5 本地库与中央库
- 1.6 Git术语汇总
- 1.7 GitHub
- 1.8 裸仓库
- 第2章 基于本地库的操作
- 2.1 初始化库
- 2.2 提交代码
- 2.3 日志查看
- 2.4 差异比较
- 2.5 提交撤销
- 2.6 删除文件
- 第3篇 中央库命令及操作
- 3.1 中央库搭建
- 3.1.1 SSH协议中央库搭建
- 3.1.2 SSH协议中央库搭建问题解决
- 3.2 推送远端库
- 3.3 冲突处理
- 第4章 进阶篇
- 4.1 分支与合并
- git整合分支的两种方式 merge 和 rebase
- 最简单的git merge 和git rebase 区别介绍和示例演示
- git merge 合并
- git rebase 变基
- 取消merge
- 4.2 标签
- 4.3 忽略不需要控管的文件
- 4.4 Git工作流程
- 4.5 HEAD 究竟是什么?
- 4.6 .git实现原理解密
- 4.7 代码拉取与提交
- 4.8 查看提交记录
- 查看前一个月提交记录
- 4.9 git reset 和 git revert的区别和适用场景
- 第5章 命令与工具篇
- 5.1 Git常用命令一览
- 5.2 Git命令索引
- git clone
- git init
- git checkout
- git revert
- git reset
- 5.3 Git GUI使用
- 5.4 Git 可视化工具
- 第6章 实战篇
- 6.1 GitHub使用介绍
- 6.2 代码覆盖与冲突解决
- 6.3 Clone项目到非空目录
- 6.4 检出指定的目录-稀疏检出
- 6.5 单个文件的回退
- 回退到指定版本
- 提交丢失场景
- 6.6 常用命令
- 6.7 分支合并
- 最简单最常见的Merge
- 取消单个文件的自动merge
- Excel 文件合并处理
- Pull request
- Bitbucket Pull request
- 分支合并之git merge ,git rebase
- 6.8 已控管文件去除版本控管
- 6.9 本地非空目录与远端库对应
- 6.10 如何使用Gitee 控管代码
- 6.11 提交和分支等记录查询
- git log 提交日志及图形化显示
- 6.12 Linux/Windows 免输密码
- 6.13 嵌套目录的代码控管
- 6.14 从远端Tag新建分支并提交到远端
- 6.15 从本地库撤销已经添加的文件或目录
- 6.16 远端库回退
- 神鬼不知之Git远端库回退更改
- 6.17 merge 之后使用git checkout会导致修改丢失吗
- 6.18 将Git远程仓库中的项目迁移到另一个远程库, So easy
- Git 切换Origin
- 第7章 常见问题及解决
- 7.1 Not a valid object name: ‘master’
- 7.2 error: Pulling is not possible because you have unmerged files.
- 7.3 SSL certificate problem
- 7.4 fatal: ambiguous argument 'HEAD^'
- 7.5 You have not concluded your merge (MERGE_HEAD exists)
- 7.6 Please commit your changes or stash them before you merge.
- 7.7 error: path 'xxx' is unmerged
- 7.8 unable to get local issuer certificate
- 7.9 github 无法取code之WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!问题解决
- 问题收集
- git clone 出现 SSL certificate problem: self signed certificate in certificate chain 问题怎么解决
- This branch is out-of-date with the base branch Merge the latest changes from main into this branch.
- 第8章 快速使用
- 快速
- 参考