gpt4 book ai didi

git - 跟踪忽略目录中的文件

转载 作者:IT王子 更新时间:2023-10-29 01:12:00 29 4
gpt4 key购买 nike

前段时间我将我的 .gitignore 文件设置为跟踪文件夹 my_folder :

my_folder/

现在我只想跟踪所述文件夹中名为 my_file.md 的给定文件。在使 .gitignore 看起来像这样之后:

my_folder/
!my_folder/my_file.md

并检查:

git status

该文件未显示为要提交的更改。

我做错了什么?


添加

我尝试将我的 .gitignore 文件更改为:

my_folder/*
!my_folder/my_file.md

按照建议,但是文件仍然没有显示为在 git status 之后提交的更改。我需要重置某些东西吗?


加2

尝试使用 git add my_folder/my_file.md 添加文件返回:

The following paths are ignored by one of your .gitignore files:
my_folder/my_file.md
Use -f if you really want to add them.
fatal: no files added

命令 git check-ignore -v my_folder/my_file.md 给出:

.gitignore:1:my_folder/*    my_folder/my_file.md

最佳答案

要添加到“.gitignore exclude folder but include specific subfolder”,调试这些 .gitignore 文件的一种好方法是使用 git check-ignore (Git 1.8.4+):

git check-ignore -v my_folder/my_file.md

由于 my_folder/ 规则,您会看到它仍然被忽略。

那是因为如果文件的父目录被排除,则不可能重新包含该文件。(*)
(*:除非在 git 2.?+ 中满足某些条件,见下文)

这就是为什么忽略该文件夹中的文件(my_folder/*,而不是文件夹本身)允许您排除一个。

当然,您可以强制添加忽略的文件(git add -f my_folder/my_file.md),但这不是本答案的重点。
重点是解释为什么在 .gitignore 中添加 !my_folder/my_file.md 不适用于 git 2.6 或更低版本。


请注意,使用 git 2.9.x/2.10(2016 年年中?),如果文件的父目录被排除在外,则可能会重新包含该文件 if there is no wildcard in the path re-included .

Nguyễn Thái Ngọc Duy (pclouds)正在尝试添加此功能:

所以在这里,对于 git 2.8+,这会起作用:

/my_folder
!my_folder/my_file.md

关于git - 跟踪忽略目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26189082/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com