执行 Git 推送 Laravel 时不包含存储链接

Kir*_*Lyn 5 git laravel gitlab laravel-5.7

我刚刚git push在我们的在线仓库中做了一个

当我检查在线仓库并检查public文件夹时,它显示了以下内容: 在此处输入图片说明

在我的本地仓库中,我的public文件夹中有这个:

在此处输入图片说明

我的本地有来自我的存储链接的存储文件夹。我猜这与.gitignore我的本地public文件夹内部有关。它包含了:

*
!.gitignore
Run Code Online (Sandbox Code Playgroud)

我的存储文件夹也是如此。在我们的 Online repo 里面storage/app/public在此处输入图片说明

在我的本地storage文件夹中:

在此处输入图片说明

user_images存在于我的本地仓库中。这是内部.gitignore

*
!.gitignore
Run Code Online (Sandbox Code Playgroud)

和外部.gitigore

*
!public/
!.gitignore
Run Code Online (Sandbox Code Playgroud)

我不太熟悉在.gitignore. 我希望确保无论我的本地存储和公共文件夹有什么,在线存储库也有。我该怎么做呢?

如果有误导性或不正确,请编辑我的标签。谢谢你。

这是根目录的内容.gitignore

/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
Run Code Online (Sandbox Code Playgroud)

我已删除/public/storage.gitignored,并试图做一个git push

Changes not staged for commit:
        modified:   .gitignore
Run Code Online (Sandbox Code Playgroud)

仍然,从我的本地仓库到在线仓库,没有什么是相同的?我可能错过了什么?

试过跑步 git check-ignore -v path/to/file

在我的根.gitignore

/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
Run Code Online (Sandbox Code Playgroud)

如果我跑了git check-ignore -v public/hot,它会回复,.gitignore:2:/public/hot public/hot但是如果我跑了git check-ignore -v public/storage,它不会响应它应该做的任何事情,因为它包含在 root.gitignore我开始相信这种情况使得public/storage/user_imagesand不可能storage/app/public/user_images。需要任何帮助。

我可能一直在查看错误的文件或路径。但我可以确认@VonC 方法帮助我在gitignore. 谢谢。

编辑:

到目前为止的最终 gitignores

.gitignore

/node_modules
# /public/hot
# /public/storage
/storage/*.key
/vendor
.env
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
Run Code Online (Sandbox Code Playgroud)

存储\应用程序.gitignore

# *
# !public/
!.gitignore
Run Code Online (Sandbox Code Playgroud)

存储\应用程序\public.gitignore

# *
!.gitignore
Run Code Online (Sandbox Code Playgroud)

公共\storage.gitignore

# *
!.gitignore
Run Code Online (Sandbox Code Playgroud)

只是一个额外的信息:

git check-ignore -v vendor.gitignore:5:/vendor vendor

git check-ignore -v /vendor给予fatal: C:/Program Files/Git/vendor: 'C:/Program Files/Git/vendor' is outside repository

我不确定git check-ignore -v路径指向哪里。

Von*_*onC 5

首先,对于文件夹中的任何文件ignore,键入:

git check-ignore -v -- path/to/file
Run Code Online (Sandbox Code Playgroud)

这将准确显示哪个.gitignore负责忽略所述文件。

二、gitignore的规则很简单:

如果排除了该文件的父目录,则无法重新包含该文件。

要从被忽略文件夹的子文件夹中排除文件(或所有文件)f,您可以执行以下操作:

f/**
!f/**/
!f/a/sub/folder/someFile.txt
Run Code Online (Sandbox Code Playgroud)

含义:您需要先将文件夹列入白名单,然后才能从 gitignore文件中排除。