git init 与git init --bare

本文详细对比了使用git init与git init --bare初始化仓库的区别。前者会在当前目录创建一个包含.git目录的工作区,后者则创建一个裸仓库,仅用于记录提交历史,不包含工作区。裸仓库适用于分离项目源码与版本库,实现更新即时显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于git 仓库的初始化操作,有人说用git init ,有人说用git init –bare ,那么我就来说一下这两者的区别吧。
git init 跟git init –bare 看上去就是后面有无–bare的区别,bare是裸的意思
1.git init 是初始化一个git仓库,比如新建一个demo1文件夹将它git初始化,

cd demo1
git init
ls -a

发现多了一个.git文件,

cd .git
ls

可以看到里面有很多git的配置文件,而我们推送的文件都会在demo1文件目录下显示,.git文件目录是记录我们进行了哪些操作,我们也可以在demo1下面进行各种git操作,然而我们本地推送的更新,一般不会马上显示在服务端,需要我们手动检出,或者配置一下hooks,具体可以查看我的上一篇博客。
git init初始化仓库无法即时检出更新的问题

2.git init –bare是初始化一个裸仓库,比如新建一个demo2文件夹,

cd demo2
git init --bare
ls

就会发现这些生成的文件其实就是.git文件目录下的那些文件,但是当我们想在这个文件目录下进行一些git操作的时候会出现报错: This operation must be run in a work tree。这个操作必须在工作树上面进行,这是因为git init –bare 生成的是一个裸仓库,是没有工作区的,只会记录git提交的历史信息,git log一下是可以看到各个版本信息的,但是没办法进行版本回退或者切换分支的操作,但是有一个好处是可以通过添加hooks钩子在demo2的同级目录下新建一个存放项目源码的文件夹,也就是说将git仓库与项目源码分离,这样推送的更新会马上显示到项目文件上,具体设置方法可以查看这篇博客
git仓库与项目源码分离

这两者的取舍我觉得还是具体情况具体分析吧,各有优劣。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值