首页 > 解决方案 > 作为开发人员,您是否使用 .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

解决方案


第二种方法是最佳实践,当涉及到排除 gitignore 规则的一些文件夹内容时。

它更好地反映了以下规则:

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

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

f/**
!f/**/
!f/a/sub/folder/someFile.txt

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

它更清晰,更短(除非您有大量文件夹要列入白名单)

如果它是带有大量目录和文件的 Joomla 安装怎么办?
或者,如果核心升级添加了新文件或文件夹怎么办

不要忘记您可以有多个 gitignore 文件,每个文件夹一个。
这意味着您可以混合和匹配这两种方法。

你有:


推荐阅读