一个 Laravel 和 PHPStorm 项目中应该在 gitignore 中包含什么?

19

我将要使用 Laravel 和 PHPStorm 协作一个项目。经过一些研究和工作于几个项目之后,这是我目前想到的 .gitignore

/bootstrap/compiled.php
/vendor
/node_modules
composer.phar
composer.lock
.env.*.php
.env.php
.DS_Store
workspace.xml
Thumbs.db

我是否忽略了其他可能导致冲突的文件?

编辑:

对于任何想知道为什么Flosculus评论在这里的人,我最初发布了我在git历史记录中遇到.idea/workspace文件的问题,他的答案是如何将其删除。


不太清楚你的问题。标题问的是要包括什么,你又问关于gitignore的问题,然后你又问是否忽略了任何东西。你问题的实质似乎是关于你的gitignore文件的问题,但你却把重点放在Laravel上。 - sjagr
抱歉造成困惑。我想我只是想要反馈,看看这个.gitignore文件是否需要添加其他内容。 - jkjmr6
你不想排除 composer.lock -- 请参阅 https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control -- 而我个人喜欢提交我的 vendor/ 子目录,因为我倾向于最终需要修补或修改许多软件包,并且并不总是有时间创建新的存储库... 可能是一个坏习惯。 - Orwellophile
4个回答

46

除非PHPStorm是项目的官方一部分(例如,由公司强制要求或所有团队成员都同意),否则我建议您将其忽略设置放入 .git/info/exclude 而不是 .gitignore。前者仅适用于您的本地副本,后者应该被提交和共享。

gitignore.io 建议在 Laravel 中使用

# Created by https://www.gitignore.io/api/laravel

### Laravel ###
vendor/
node_modules/
npm-debug.log

# Laravel 4 specific
bootstrap/compiled.php
app/storage/

# Laravel 5 & Lumen specific
public/storage
public/hot
storage/*.key
.env.*.php
.env.php
.env
Homestead.yaml
Homestead.json

# Rocketeer PHP task runner and deployment package. https://github.com/rocketeers/rocketeer
.rocketeer/

还有适用于PHPStorm的内容:

# Created by https://www.gitignore.io/api/phpstorm

### PhpStorm ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff:
.idea/**/workspace.xml
.idea/**/tasks.xml

# Sensitive or high-churn files:
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml

# Gradle:
.idea/**/gradle.xml
.idea/**/libraries

# Mongo Explorer plugin:
.idea/**/mongoSettings.xml

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

### PhpStorm Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr

顺便提一下,你可以通过命令行访问gitignore.io,这样你就能做像这样的事情了

gi laravel,phpstorm >> .gitignore

这是一个相当方便的小工具。


我在这个问题上找到了矛盾的信息:为什么不在这里也将public/js和public/css添加到.gitignore中呢? - Bas von Bassadin
你为什么想要忽略那些目录呢?无论如何,我只是展示了gitignore.io(现在由Toptal拥有)推荐的内容。相同的内容可以在github/gitignore存储库中找到(https://github.com/github/gitignore/blob/master/Laravel.gitignore)。 - Chris

4

Laravel在安装后会自动创建它:

/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log

这在旧项目中是正确的。我今天创建了几个新项目,它们不再添加此功能。 - Nilpo

3

我使用这个聪明的.gitignore文件 ;) ,希望它能对某些人有所帮助:

/node_modules
# ignore log files and databases
*.log
*.sql
*.sqlite
# ignore compiled files
*.com
*.class
*.dll
*.exe
*.o
*.so
# ignore packaged files
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# ignore OS generated files
ehthumbs.db
Thumbs.db
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
# ignore Editor files
*.sublime-project
*.sublime-workspace
*.komodoproject
_ide_helper.php
/.idea
/.vscode
# Eclipse project files
.buildpath
.project
.settings/
# Ignore cache
.cache/
# Ignore user created files :)
*.bak
*.orig
# Ignore system files
.bash_history
LICENSE_AFL.txt
LICENSE.html
LICENSE.txt
LICENSE_EE*
RELEASE_NOTES.txt
.ssh/
error_log
.htpasswds
/.htaccess
php.ini.sample
.modgit/
_vti_bin/
_vti_cnf/
_vti_inf.html
_vti_log/
_vti_pvt/
_vti_txt/
tmp/
php.ini
_old/
.htpasswds/
.htpasswd
.viminfo
.profile
.bashrc
.bash_logout
.modman/
pkginfo
nohup.out
Homestead.yaml
Homestead.json
/.vagrant
.phpunit.result.cache
#Laravel Specific files
/vendor
.env
/public/.htaccess
/storage
storage/*.key

-8
rm -rf .idea
git-ignore .idea/
git commit -a -m 'deleted and ignored .idea/'

重新加载项目。


9
我建议不要随意删除文件目录,而是保留它们,但取消跟踪可能是更好的选择。换言之,将 .idea/ 添加到 gitignore 中,然后执行以下命令:git rm -r --cached .idea/ - Marlon van der Linde
2
@MarlonvanderLinde 是正确的。你绝对不想强制递归删除.idea文件夹。如果你已经在项目上工作了一段时间,那么你可能有一些配置和与项目相关的设置,你不想失去它们。我以前不小心删除过它,这是一个巨大的痛苦去找回来。这并不是说不要gitignore它...但是不要完全删除它。 - Brandon
3
哦,岁月的痕迹如此清晰,我实际上已经不再这样做了 :P - Flosculus
1
无论你是否这样做,它们仍会被他人阅读多年。 :-) - Marlon van der Linde
也许你应该删除这个答案? - miken32

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接