thinkphp项目上传到github,为什么缺少很多文件
问题:
把tp5项目push到码云(类似github)上,为什么没有thinkphp这个核心库?
然后我看了下码云和github上,官方的thinkphp5项目,也是没有thinkphp这个核心库的?为什么呢?如果我在上传自己的tp5项目时想把thinkphp核心库同时push上去,应该怎么做?
解答:
.gitignore文件忽略掉了
配置.gitignore文件把thinkphp删掉就ok了
如下图
Git中.gitignore文件的使用
在我们使用git的时候,有时候就不想传一些与代码无关的文件到远程仓库中,比如说编译后的文件,.gitignore就可以帮助我们处理这些文件。
-
生成.gitignore文件
在git bash中使用命令touch .gitignore,就可以在当前目录下生成.gitignore文件 -
编辑.gitignore文件
在git bash中,使用vi .gitignore就可以编辑此文件,编辑结束后按Esc然后按:,最后输入wq表示保存退出,输入q表示不保存退出。这与在Linux终端中的操作是一样的。 -
.gitignore文件内容的规则
-
/ 表示目录
比如/A/*就表示忽略A目录下所有内容 -
* 表示匹配多个字符
上面忽略A目录下所有内容使用的就是*,忽略iml结尾的文件即使用*.iml -
[]表示匹配多个单个字符
[abc]就是代表a、b、c中任何一个字符即可 -
! 表示跟踪某类文件
比如 /*,!*.c,表示忽略所有文件,但是跟踪.c结尾的文件,这样.c结尾的文件就不会被忽略了
-
-
在使用.gitignore文件后如何删除远程仓库中以前上传的此类文件而保留本地文件
比如我们在使用git和github的时候,之前没有写.gitignore文件,就上传了一些没有必要的文件,在添加了.gitignore文件后,就想删除远程仓库中的文件却想保存本地的文件。
这时候不可以直接使用git rm directory,这样会删除本地仓库的文件。
可以使用git rm -r –cached directory来删除缓冲,然后进行commit和push,这样会发现远程仓库中的不必要文件就被删除了,以后可以直接使用git add -A来添加修改的内容,上传的文件就会受到.gitignore文件的内容约束。
.gitignore文件的格式规范:
A:#为注释
B:可以使用shell所使用的正则表达式来进行模式匹配
C:匹配模式最后跟"/"说明要忽略的是目录
D:使用!取反(例如目录中包含 test.a,并且gitignore文件中包含 *.[oa],如果在文件中加入 !test.a 表明忽略除test.a文件以外的后缀名为.a或者.o的文件)