当前位置:主页 > 查看内容

Git init和Git init --bare的区别,以及Git init --bare如何创建

发布时间:2021-05-21 00:00| 位朋友查看

简介:作者:Mintimate 博客: https://www.mintimate.cn Mintimates Blog,只为与你分享 封面 仓库初始化 我们搭建好一个Git服务器后,在初始化仓库,往往使用 git init 或 git init --bare 来初始化项目。但是,这两个的区别是什么呢? Git init 通常,我们初始……

作者:Mintimate

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

Mintimate's Blog,只为与你分享

封面

仓库初始化

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

Git init

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

git init初始化的仓库

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

cd .git
ls -a
.git内部

Git init --bare

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

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是什么?

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

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

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

post-receive

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

# 当前在裸仓库内
cd hooks
# 创建并编辑post-receive
vim post-receive

输入内容:

#!/bin/sh
git --work-tree=#工作空间# --git-dir=#Git仓库地址# checkout -f

比如:

我的设置

其中:

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

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

chmod +x post-receive

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

服务器
提交用户的本地

总结

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


本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐