本文主要是介绍git init 与git init --bare,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于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仓库与项目源码分离
这两者的取舍我觉得还是具体情况具体分析吧,各有优劣。
这篇关于git init 与git init --bare的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!