git拉取项目以及git的几点特性
git + composer拉取项目
1.先从远程仓库克隆项目
git clone https://github.com/pengloo53/learngit.git
2.composer安装json中的所需第三方
composer install
因为在lavarel根目录中有一个 composer.json文件,里面有所需的第三方以及版本
解释:
1.首先项目目录是没有.env文件的,因为大家公用一个数据库,这个文件一般在提交的时候都被忽略,所以只在git最高的版本管理者那里管理这个文件,我们拉下来之后直接复制一个.env过来,配置好数据库信息即可。
2.为什么第三方也要重新拉呢,因为一个项目有一半左右的体积都是第三方,每个人直接从git克隆不如composer换源之后自己拉取。
3.composer拉取的时候,一定要注意当前目录位置是不是项目根目录,因为composer不仅拉取了一些文件,还给当前环境生成了很多环境文件。
3.composer换源
composer config -g repo.packagist composer https://packagist.phpcomposer.com
修改composer的全局配置文件
关于git
对于版本管理的理解
以前只是觉得版本管理是对文件修改之后合并,提交之类的操作,其实版本管理的意思是默认当前分支为运行分支,并且能够与其他分支和远程仓库进行交互。比如当我运行了我的laravel项目,在终端版本管理,切换到test分支,在test分支上写上路由a,当我依然在分支test的时候,能访问到路由a,但是,当我切换了分支,再次在浏览器输入路由a的时候,页面就会报错。
总结:版本管理就是给你当前的文件多个版本,系统能找到的版本就是你目前所在的版本(分支)
其他git特性
1.多层 git
在刚才讲的对于git理解的基础上,再举个例子:
首先建立空文件 test 并创建a文件
git init
git checkout -b dev //创建 dev分支
cd test
git init
git checkout -b dev2
这个时候,在test外层有两个分支 master 和 dev
test里面也有两个分支 master 和 dev2
现在就有两层的git 这就相当于二维数组一样,你在每一层所在的分支就是系统按照路径找过去的时候的版本。
2.删除.git
首先 git 记录的是改变,并不记录版本,当你git init 的时候,会生成一个.git的文件夹,这个文件夹里面记录了所有改变,当你删除了这个文件夹,再git branch的时候,会提示没有创建过版本仓库。也就是说,回到文件最初的状态。
3.目前还迷惑的一个问题
vim test.php 写入'1111'
git init
git add .
git commit -m '111'
git checkout -b dev
vim test2.php 写入‘2222’
这个时候不做任何git add 和commit
再git checkout master
ls 发现里面同样有 test2.php这个文件(这个文件是在dev分支上创建的)
git checkout dev
git add .
git commit -m '333'
这个时候再回到master 发现里面只有一个文件test.php,在dev分支创建的test2.php没了。
一样的道理,假如我在某分支写了一个路由,提交之后,在这个分支的时候,浏览器访问正常,切另外分支,浏览器报错。
但是当我在某分支写了路由,不做提交,那么浏览器访问任何分支都不会报错。
假如按照之前的理解,切换到哪个分支,访问这个路径就呈现分支的内容,那现在这个现象就解释不了了。
假如像以下这么理解,就是能符合这个现象的:
当我们按照路径访问这个git所管理的文件时,git呈现的是工作区和版本仓库加和在一起的内容,当像第一个例子,按照正常的流程,修改 add commit之后,工作区又是干净的,所以呈现的就是某个分支上的内容;但是当我们修改了文件,但没有提交,工作区是有内容的,那么无论我们处在哪个分支,git呈现的则是工作区和分支的加和。
但是,这个情况似乎没什么用处,这样理解也不一定对。希望有正解的你可以分享。