- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的实际问题
我希望只有目录结构根目录中的 .gitignore
文件会忽略文件,即子目录中的 .gitignore
文件不应忽略文件。
要清楚
我不想 gitignore 其他 .gitignore
文件。我希望他们致力于 git 但我不希望他们忽略其他文件。
特定用例
假设我想将样板项目结构提交给 git。假设项目结构如下所示:
project-root/
│
├── boilerplate/
│ ├──directory/
│ ├──some-other-directory/
│ ├──.env
└── └──.gitignore // Has a line ".env" which will ignore the .env file in this directory
│
├── boilerplate2/
│ ├──directory/
│ ├──some-other-directory/
│ ├──.env
└── └──.gitignore
│
└── .gitignore // The .gitignore in root
现在 boilerplate
目录中的 .gitignore
文件将 gitignore .env
我不想要。如何阻止嵌套的 .gitignore
文件执行操作?
我尝试了什么?
我在主 .gitignore
文件中尝试了否定 (!
) 运算符。对于上面的示例结构,它等同于 !boilerplate/.env
。 root 中的 .gitignore
对指定目录中的 .gitignore
文件没有任何权限。它不会覆盖它。为什么它会这样工作?有解决方法吗?
编辑:
VonC建议使用脚本自动化,但这不是问题所在。问题是,如果可能的话,如何仅使用 .gitignore
来做到这一点。
最佳答案
Now the .gitignore file in boilerplate directory will gitignore .env which I don't want.
不会。
如果 boilerplate/.env
已添加(git add --force
)并提交,则对该特定 .env
文件的任何更改仍会被检测到,而不是被忽略。
OP 添加:
But when I do git status, git ignores boilerplate/.env due to boilerplate/.gitignore (which isn't commited either)
然后,是的,它将忽略所有 .env
,除非它们本身就是版本。
The
.gitignore
in root simply doesn't have any power over the.gitignore
file in the specified directory.
It doesn't override it.
接下来是 precedence rules for a .gitignore
:
Patterns read from a
.gitignore
file in the same directory as the path, or in any parent directory (up to the top-level of the working tree), with patterns in the higher level files being overridden by those in lower level files down to the directory containing the file.
在你的情况下,我会:
.env
规则.env.tpl
具有默认初始值的模板文件.gitattributes
文件 content filter driver *.tpl
那个涂抹脚本(例如,'script_tpl',它也可以进行版本控制)将是一个 bash 脚本(它甚至可以在 Windows 上运行,因为 Git for Windows 带有 bash.exe
):
#!/bin/bash
file="${f%.tpl}" # ex: .env.tpl => .env
if [[ ! "${file}" ]]; then cp "${f}" "${file}"; fi
我会添加一个 senv
脚本,让任何协作者使用存储库的本地克隆来执行,以便自动注册内容过滤器驱动程序。它将包括:
#!/bin/bash
DIR="$( cd "$( dirname "$(readlink -f "${BASH_SOURCE[0]}")" )" && pwd )"
# assuming the smudge script is at the root of the repository
which script_tpl || export PATH=${PATH}:${DIR}
git config --global filter.tpl.smudge 'script_tpl'
那样,任何时候你切换分支,检查 .env
是否存在的涂抹脚本,如果不存在,将创建一个(它将被所有不同的 .env 忽略)。 gitignore
文件)
关于gitignore - 忽略根目录以外的其他 .gitignore 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71389176/
我正在使用 prestashop,在主题中我添加了自己的目录,里面有一个样式表 然后我在 header.tpl 中链接了样式表 例如 但是,如果我在子目录中安装 prestashop,例如 www.
我有以下目录结构: C:\mywebsites \site_1 \site_2 \site_n 在“site_2”中,我安装了 joomla,但是,我在“额外”文件夹之一中有其他文件夹,其
我有一个家庭作业,要求我使用 bash 脚本在 Linux 终端中打印某些内容。我已经完成了其中的大部分,但我被困在我需要做的最后一件事上......这就是我的教授的措辞 Checks to see
通过 Windows Batch,删除文件夹的所有子目录和子文件而不删除/删除所述父/根文件夹的命令是什么? 到目前为止,这是我尝试过的: ECHO "Good riddance, cache! Mu
我正在将 OpenCV 用于各种对象检测器,但我发现很难编写可移植代码。 例如,要在通过自制软件安装了 OpenCV 的 Mac 上加载人脸检测器,我必须这样写: haar=cv.Load('/usr
目录树的主要部分有root(/)、/USR、/var、/home等等。下面是一个典型的linux目录结构如下: / 根目录 /bin 存放必要的命令 /boot
我被这个非常愚蠢的错误所困扰。我正在尝试使用 bluepy 在 Raspberry Pi 上运行 pytest。 pi@pi:~/bluepy/bluepy $ pytest test_asdf.py
我在 Ubuntu 14 上安装了 MediaWiki,该站点的 URL 为:www.wiki.example.com/mediawiki/ 但是我想将位置更改为 www.wiki.example.c
我已经阅读了文档,但有些事情仍然让我感到困惑,主要与同步文件夹和数据库数据有关。 我想在我的主机上使用以下文件夹结构 ROOT |- workFolder ||- project1 |||- proj
我想在我的 Azure webrole 启动时授予网络服务帐户修改权限(根项目目录),有人知道这样做的方法吗?修改后,我会重置该值以确保安全。主要目的是我需要修改 webconfig 以根据多个节点上
我需要作为自定义构建器的一部分按顺序运行两个程序。 其中一个程序我被困住了,无法处理绝对/相对路径,因此我必须使用构建器的 chdir=1 选项才能运行其操作与目标位于同一目录中。 第二个是位于项目的
Cmake的安装命令 install(TARGETS MyTarget LIBRARY DESTINATION lib) 要求我将共享库安装到子文件夹中。似乎 LIBRARY DESTINATION
我正在尝试运行这个: string webRoot = "http://www.dev/api"; string apiRoot = "http://api.dev"; string path = "
在 android 中,我可以使用以下方法获取手机的可移动外部存储: for (File f : context.getExternalFilesDirs("/")) if (Environm
当我启动 tomcat 时,它从 localhost:8080/开始服务。我希望它从 localhost:8080/aaa 开始服务。我不想用“aaa”webapp 替换“root”webapp,我希
我想在按下按钮时向页面顶部的根 html 标记添加一个类。我遇到的唯一代码是将类添加到具有 id 的 div 元素。 Untitled Document 开始演示 我尝试修改这段代码,但没
我希望了解 ROOT 的 TTreeReader 和 TVector3 类的人可以帮助我。 我正在尝试使用 TTreeReader 读取包含 TVector3 的 TTree。 class MuseS
我已经从已经运行并安装在我本地的服务器上下载了 prestashop 文件选择了默认主题,但未应用任何样式表例如,当我通过 Firebug 检查时,样式表路径是错误的我有 http://localho
我有一个脚本,用于搜索包含特定文件的目录,从当前目录开始向上爬(想想试图找出 .git 目录所在的位置)。 我的方法是这样的: def getDir(self,cwd): path = os.pa
我需要 检查当前目录是否在Git版本控制下 如果是 Git 根目录 在单行 shell 脚本中执行上述操作,成功时应以 0 退出 最佳答案 使用 git-rev-parse 是可行的方法。只需确保将其
我是一名优秀的程序员,十分优秀!