前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git init和Git init --bare的区别,以及Git init --bare如何创建工作空间

Git init和Git init --bare的区别,以及Git init --bare如何创建工作空间

原创
作者头像
Mintimate
修改2021-07-06 12:07:55
4.1K0
修改2021-07-06 12:07:55
举报
文章被收录于专栏:Mintimate's BlogMintimate's Blog

作者:Mintimate

博客:https://www.mintimate.cn

Mintimate's Blog,只为与你分享

封面
封面

仓库初始化

我们搭建好一个Git服务器后,在初始化仓库,往往使用git initgit init --bare来初始化项目。但是,这两个的区别是什么呢?

Git init

通常,我们初始化本地仓库时,使用git init:建立一个标准的Git仓库

git init初始化的仓库
git init初始化的仓库

这样的仓库初始化后,其项目目录为工作空间,其下的.git目录是版本控制器。

代码语言:txt
复制
cd .git
ls -a
.git内部
.git内部

Git init --bare

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

git init --bare初始化的仓库
git init --bare初始化的仓库

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

这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作(如:pushcommit操作)。但是,你依旧可以使用git show命令查看提交内容:

查看内容
查看内容

使用环境

相信看完上述描述,大家已经知道什么时候使用Git init,什么时候又使用Git init --bare了:

  • init:适用于本地仓库初始化,有完整的Git命令集,可以提交工作空间的代码和文件。
  • init --bare::适用于远程仓库初始化,默认没有工作空间

只适合git init --bare适用于远程仓库;一方面,使用Git方便备份本地项目,另外一方面,没有工作空间,只提供版本管理的Git,更方便团队协作。但是,如果你远程初始化的“裸”仓库,之后想看默认分支的工作空间具体项目文件怎么办?

很简单,配合git工具下的hook

裸仓库创建工作空间

“裸”仓库创建工作空间很简单,配合hook即可。

裸仓库内的hook
裸仓库内的hook

hook是什么?

Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。

简单地说,hook就是一些在Git特点动作时候,触发的事件。

具体可以查看:Git官方中文文档

post-receive

我们要在裸仓库内,看到用户提交的工作空间很简单。只需要编写post-receivehook即可:

代码语言:txt
复制
# 当前在裸仓库内
cd hooks
# 创建并编辑post-receive
vim post-receive

输入内容:

代码语言:txt
复制
#!/bin/sh
git --work-tree=#工作空间# --git-dir=#Git仓库地址# checkout -f

比如:

我的设置
我的设置

其中:

  • 工作空间:服务器上空目录地址,git用户需要有读写权限
  • Git仓库地址:服务器上本仓库地址。

之后,进行提取(赋予执行权限):

代码语言:txt
复制
chmod +x post-receive

之后,用户push提交后,在外面定义的工作空间就可以看到用户提交的具体内容:

服务器
服务器
提交用户的本地
提交用户的本地

总结

git init使用于本地进行项目部署和搭建,git init --bare使用于服务器上,多版本协同管理。你可以使用hook来对服务器上内容进行进一步完善。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 仓库初始化
  • Git init
  • Git init --bare
  • 使用环境
  • 裸仓库创建工作空间
    • hook是什么?
      • post-receive
      • 总结
      相关产品与服务
      Prowork 团队协同
      ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档