Git服务器(中心仓库(裸仓库))搭建

目录

前言:Git三大重要的区域

前言:SVN与Git的最主要的区别

搭建Git服务器

git init --bare初始化中心仓库(裸仓库)


前言:Git三大重要的区域

  • 工作区
  • 简单理解就是需要进行版本控制的某个文件夹(假设为test)
  • 这个文件夹有一些特殊之处-多了.git这个隐藏的文件夹
  • 版本库
  • test文件夹下的.git文件夹就是版本库
  • 暂存区
  • 暂存区可以理解为一个虚拟工作区,这个虚拟工作区会跟踪工作区的文件变化(增删改等操作)
  • 一般存放在.git文件夹下的index文件(.git/index)中
  • 工作区的文件先被增加到这个区域里,再从这个区域提交到版本库
  • 除非是绕过暂存区直接提交
  • 否则Git想把修改提交上去,就必须将修改存入暂存区最后才能commit
  • 每次提交的是暂存区所对应的文件快照

前言:SVN与Git的最主要的区别

  • SVN是集中式版本控制系统,版本库是集中放在中央服务器的
  • 而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活
  • 干完后,需要把自己做完的活推送到中央服务器
  • 集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快
  • 如果在互联网下,如果网速慢的话,就纳闷了
  • Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库
  • 这样工作的时候就不需要联网了,因为版本都是在自己的电脑上
  • 既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?
  • 比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A
  • 这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了

搭建Git服务器

  • 远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改
  • GitHub就是一个免费托管开源代码的远程仓库
  • 但是对于某些视源代码如生命的商业公司来说
  • 既不想公开源代码,又舍不得给GitHub交保护费
  • 那就只能自己搭建一台Git服务器作为私有仓库使用
  • 搭建Git服务器需要准备一台运行Linux的机器,然后通过几条简单的apt命令就可以完成安装
  • 第一步,安装git
  • 第二步,创建一个git用户,用来运行git服务
  • 第三步,创建证书登录
  • 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件
  • 把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
  • 第四步,初始化Git仓库
  • 第五步,禁用ssh登录
  • 第六步,克隆远程仓库,在各自的电脑上运行

git init --bare初始化中心仓库(裸仓库)

  • git init使用于本地进行项目部署和搭建

  • git init --bare使用于服务器上,多版本协同管理

  • 安装完git之后,要创建版本库

  • 比如:在某文件夹下新建了一个文件夹名为repository.git(服务器上的Git仓库通常都以.git结尾)

  • 将repository.git初始化为git仓库(git init)

  • 如果初始化远程仓库的话,要使用这个命令:git init --bare repository.git

  • git init --bare: 指定某个目录成为中心仓库(裸仓库)

  • 通常,我们初始化远程服务器仓库时,使用git init --bare < repo >:建立一个“裸”的git仓库

  • 这样的仓库初始化后,其项目目录下就是标准仓库.git目录里的内容,没有工作区

  • 这样初始化的仓库并没有.git目录,只有.git目录下的文件

  • 不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件

  • 这些版本历史记录文件就存放在.git目录下

  • 而使用--bare选项时,不再生成.git目录

  • 而是只生成.git目录下面的版本历史记录文件

  • 这些版本历史记录文件也不再存放在.git目录下面

  • 而是直接存放在版本库的根目录下面

  • 用"git init"初始化的版本库用户也可以在该目录下执行所有git方面的操作

  • 但别的用户在将更新push上来的时候容易出现冲突

  • 解决办法就是使用”git init --bare”方法创建一个所谓的裸仓库

  • 之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息

  • 而不允许用户在上面进行各种git操作(如:push、commit操作)

  • 如果你硬要操作的话,只会得到错误(”This operation must be run in a work tree”)

  • 但是,你依旧可以使用git show命令查看提交内容

  • 这个就是最好把远端仓库初始化成bare仓库的原因

  • 说白了,就是会创建一个裸仓库,裸仓库没有工作区

  • 服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区

  • 裸仓库适用于远程仓库,裸仓库可以直接作为服务器仓库供各开发者push、pull数据,实现数据共享与同步,不保存文件,只保存历史提交的版本信息

  • 注意

  • 不保存文件,只保存历史提交的版本信息,克隆时依旧会拿到完整的代码库

  • 因为在初始化第一次push时,就已经产生了add记录

相关推荐

  1. Git服务器(中心仓库(仓库))

    2024-05-16 06:58:12       12 阅读
  2. 创建局域网git仓库

    2024-05-16 06:58:12       35 阅读
  3. linuxgit仓库

    2024-05-16 06:58:12       39 阅读
  4. git私人仓库

    2024-05-16 06:58:12       13 阅读
  5. Git篇如何在自己服务器自己的git私有仓库

    2024-05-16 06:58:12       46 阅读
  6. Git篇如何自己的git仓库

    2024-05-16 06:58:12       32 阅读
  7. ELK日志中心(六)- harbor镜像仓库

    2024-05-16 06:58:12       20 阅读
  8. gitlab仓库

    2024-05-16 06:58:12       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-16 06:58:12       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-16 06:58:12       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-16 06:58:12       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-16 06:58:12       20 阅读

热门阅读

  1. VC++6.0自定义实现日志记录到文件及界面显示

    2024-05-16 06:58:12       12 阅读
  2. 分布式websocket实时通讯的session共享问题

    2024-05-16 06:58:12       13 阅读
  3. 安卓手机APP开发__支持64位的架构

    2024-05-16 06:58:12       13 阅读
  4. 16 | 缓存策略:如何使用缓存来减少磁盘IO?

    2024-05-16 06:58:12       10 阅读
  5. 如何玩转github

    2024-05-16 06:58:12       10 阅读
  6. Pinia:Vue 的强大存储库

    2024-05-16 06:58:12       13 阅读
  7. NIUKE Python:Python入门(上)

    2024-05-16 06:58:12       14 阅读
  8. python脚本编辑oss文件

    2024-05-16 06:58:12       13 阅读
  9. linux编译gdb

    2024-05-16 06:58:12       14 阅读
  10. springboot集成dubbo实现微服务系统

    2024-05-16 06:58:12       13 阅读