作者:Mintimate
Mintimate's Blog,只为与你分享
我们搭建好一个Git服务器后,在初始化仓库,往往使用git init
或git init --bare
来初始化项目。但是,这两个的区别是什么呢?
通常,我们初始化本地仓库时,使用git init
:建立一个标准的Git仓库。
这样的仓库初始化后,其项目目录为工作空间,其下的.git
目录是版本控制器。
cd .git ls -a
通常,我们初始化远程服务器仓库时,使用git init --bare
:建立一个“裸”的Git仓库。
这样的仓库初始化后,其项目目录下就是标准仓库.git
目录里的内容,没有工作空间。
这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作(如:push
、commit
操作)。但是,你依旧可以使用git show
命令查看提交内容:
相信看完上述描述,大家已经知道什么时候使用Git init
,什么时候又使用Git init --bare
了:
工作空间
的代码和文件。只适合git init --bare
适用于远程仓库;一方面,使用Git方便备份本地项目,另外一方面,没有工作空间,只提供版本管理的Git,更方便团队协作。但是,如果你远程初始化的“裸”仓库,之后想看默认分支的工作空间具体项目文件怎么办?
很简单,配合git工具下的hook
“裸”仓库创建工作空间很简单,配合hook即可。
Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的
和服务器端的
。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。
简单地说,hook就是一些在Git特点动作时候,触发的事件。
具体可以查看:Git官方中文文档
我们要在裸仓库内,看到用户提交的工作空间很简单。只需要编写post-receive
hook即可:
# 当前在裸仓库内 cd hooks # 创建并编辑post-receive vim post-receive
输入内容:
#!/bin/sh git --work-tree=#工作空间# --git-dir=#Git仓库地址# checkout -f
比如:
其中:
之后,进行提取(赋予执行权限):
chmod +x post-receive
之后,用户push
提交后,在外面定义的工作空间就可以看到用户提交的具体内容:
git init
使用于本地进行项目部署和搭建,git init --bare
使用于服务器上,多版本协同管理。你可以使用hook来对服务器上内容进行进一步完善。
3月Techo Youth高校公开课Demo实操演练 【活动已结束】 3月Techo Youth高校公开...
2020年7月9日,2020年世界人工智能大会(the World Artificial Intelligence Con...
中台有机衔接稳定的后台系统和灵活多变的前端业务场景 通过抽取后台系统的数据 ...
怎么防御udp攻击?UDP Flood是日渐猖厥的流量型 ddos 攻击。常见的情况是利用大...
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上所...
发布会传送门 : https://yqh.aliyun.com/live/aiotfa 近日,阿里云AIoT春季产品...
客户简介 深圳盒子信息科技有限公司成立于2011年,是国家高新技术企业、深圳市高...
MongoDB是一个基于分布式文件存储的数据库。 由C++语言编写。旨在为WEB应用提供...
在过去的一年中,云计算已经成为组织应对冠状病毒疫情对其业务不利影响的关键技...
1、智能语音点餐机解决方案方案架构 架构特点 基于达摩院特有的多模态交互技术 ...