我能否从.git/info/exclude覆盖.gitignore中的任何忽略规则?

3

我已经在.gitignore文件中为所有repo用户创建了一些规则。我需要在不更改.gitignore的情况下忽略某些规则。(这些忽略规则应该继续适用于其他用户) 我知道可以使用“git add -f 文件名”命令,但是我不想每次都指向特定的文件/文件夹,所以我更喜欢使用“git add .”

我在我的.gitignore文件中有以下规则

Source/Utils/*

我尝试在自己的.git/info/exclude中覆盖它,但是没有成功。

!Source/Utils/*

您有关于覆盖的任何信息吗?


2
XY 问题。你想要实现什么目标,导致你提出这个问题? - NightOwl888
我应该能够提交一些目录,而目录忽略规则将继续在项目团队中。 - erdalt
1个回答

2
如果您想“取消忽略”一个文件夹,那么忽略规则应该是:
myfolder/**

也就是说,你应该只忽略文件,而不是文件夹本身,因为一旦忽略了文件夹,任何数量的 ! 规则都无法生效。

然后,您可以使用以下命令在本地取消忽略文件夹内容:

!myfolder/
!myfolder/**

请注意,忽略模式首先在本地的.gitignore中读取,然后在info/exclude中:请参见gitignore模式手册。这意味着如果你先取消忽略(在本地的.gitignore中),那么exclude文件中的忽略规则将覆盖它。但是,如果您在本地忽略了某些内容,则exclude中的取消忽略规则将起作用。

如果我将它们写入同一个配置文件中,我可以像您提到的那样取消忽略。但是我使用两个配置文件。 在.gitignore中:myfolder/** 在.git/info/exclude中:!myfolder/** 这样做不起作用。但是如果我像这样更改位置,它就可以工作:在.gitignore中:!myfolder/** 在.git/info/exclude中:myfolder/**如我之前所述,我不应更改.gitignore文件。我认为git/info/excludefile在gitignore之前被处理。 - erdalt
@erdalt 是的,我已经编辑了答案并解释了原因,并提供了文档链接。 - VonC

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