gitignore - 作为开发人员,您是否使用 .gitignore 来忽略所有内容并故意包含?或者你只是排除它?
问题描述
我们在这里进行了内部讨论,我们对在包含大量文件的项目(如 CMS)上使用 .gitignore 的最佳实践感到有些困惑。
方法一
方法 1 是有目的地 .gitignore 所有标准的构建文件。这通常会像这样开始:
# ignore everything in the root except the "wp-content" directory.
!wp-content/
# ignore everything in the "wp-content" directory, except:
# "mu-plugins", "plugins", "themes" directory
wp-content/*
!wp-content/mu-plugins/
!wp-content/plugins/
!wp-content/themes/
# ignore these plugins
wp-content/plugins/hello.php
# ignore specific themes
wp-content/themes/twenty*/
# ignore node dependency directories
node_modules/
# ignore log files and databases
*.log
*.sql
*.sqlite
一些工作人员喜欢这种方法,因为如果您在标准文件之外创建一些东西,例如/build
文件夹,那么它会自动被检测到是否包含。但是,编写自定义主题和插件需要您在此文件中添加几层以“进入”您要保留的文件夹,并且通常,该文件阅读起来有点混乱。
方法二
方法 2 忽略所有内容,然后将您想要的内容列入白名单。那看起来像
# Ignore everything, but all to descend into subdirectories
*
!*/
# root files
!/.gitignore
!/.htaccess.live
!/favicon.ico
!/robots.txt
# theme
!/wp-content/themes/mytheme/**
/wp-content/themes/mytheme/style.css # Ignore Compiled CSS
/wp-content/themes/mytheme/js # Ignore Compiled JS
# plugins
!/wp-content/plugins/my-plugin/**
# deployment resources
!/build/**
一些员工喜欢这样,因为它更干净,你必须有目的地添加一些东西(这使得意外添加更难),它实际上也向你展示了你的 .git 文件夹结构。
最佳做法是什么?您喜欢哪种方法,您会建议使用另一种方法吗?
解决方案
第二种方法是最佳实践,当涉及到排除 gitignore 规则的一些文件夹内容时。
它更好地反映了以下规则:
要从被忽略的文件夹的子文件夹中排除文件(或所有文件)f
,您可以:
f/**
!f/**/
!f/a/sub/folder/someFile.txt
含义:您需要先将文件夹列入白名单,然后才能从 gitignore 文件中排除。
它更清晰,更短(除非您有大量文件夹要列入白名单)
如果它是带有大量目录和文件的 Joomla 安装怎么办?
或者,如果核心升级添加了新文件或文件夹怎么办
不要忘记您可以有多个 gitignore 文件,每个文件夹一个。
这意味着您可以混合和匹配这两种方法。
你有:
- http://gitignore.io/ (当涉及到Joomla 应用程序时,它会列入黑名单)
github/gitignore
(与Joomla相同的方法)