稀疏文件夹树的gitignore文件(强制包含文件而不是子文件夹,作为先前的SO问题)

时间:2019-01-24 15:27:40

标签: git

我们有一个文件夹树,其中包含大约1000多个不同深度的xml文件。 (包含来自第三方程序的游戏配置参数)。

我们已经编辑了大约10个文件,并希望有一个可以通过git clone提取的存储库,以便可以将更改覆盖在本地文件夹树的顶部。

这几乎可以正常工作。

遵循以下建议:.gitignore exclude folder but include specific subfolder

我们所做的是将基于Windows的树的.gitignore模式(文件globbing)放入其中,以忽略某些顶级文件夹。例如

/Scenarios/**
/Model/**
/Directives/**
/ContactReports/**
/Behaviors/**
/PlayerTemplates/**
/PlayerComponents/**

然后,我们稍后尝试添加一些文件(可以通过git add -f来完成,但我们希望使用.gitignore解决方案)。

类似的模式:

!/Behaviors/BasilanWP.bgf
!/Behaviors/BasilanFull.bgf

工作正常,因为它们位于文件夹树的顶层。

但是仍然会忽略以下模式(在子文件夹级别)

!/PlayerTemplates/Weapon/Air_to_Surface/AGM65E.xml
!/PlayerTemplates/Air/Fighter/F-15.xml

有人要求我查看这是否是Windows独有的小写/大写问题。 这是我们使用git add -f

手动强制文件后的git ls-files的输出
D:\Source\NGTS Scenario>git ls-files
.gitignore
Behaviors/BasilanFly.bgf
Behaviors/BasilanFull.bgf
Behaviors/BasilanJSOW.bgf
Behaviors/BasilanWP.bgf
Behaviors/JSOWBehavior.bgf
Behaviors/LMBCommandPost.bgf
Behaviors/Macros/FlyWaypoint.bgf
Behaviors/MaverickToPoint.bgf
Directives/JSOWDirective.dgf
Directives/MaverickDirective.dgf
PlayerComponents/Weapon/Air-to-Surface/AGM-65E.xml
PlayerComponents/Weapon/Air-to-Surface/AGM-DraperMaverick.xml
PlayerTemplates/Air/Fighter/F-15.xml
PlayerTemplates/Weapon/Air_to_Surface/AGM65E.xml
README.md
Scenarios/Basilan.nscen
Scenarios/BasilanFullJSOW.nscen
Scenarios/BasilanJSOW.nscen
Scenarios/BasilanMacrosWP.nscen
Scenarios/BasilanSOW.nscen

完整.gitignore

/jammers_extra.xml
/sensors_extra_b1.xml
/sensors_extra_b52.xml
/sensors_extra_cafdmo.xml
/sensors_extra.xml
/trafficConfig.xml
/TXA/**
/TacticalVariableGroups/**
/Scenarios/**
/Model/**
/Directives/**
/ContactReports/**
/Behaviors/**
/PlayerTemplates/**
/PlayerComponents/**
!/Behaviors/BasilanWP.bgf
!/Behaviors/BasilanFull.bgf
!/Behaviors/Macros/FlyWaypoint.b
!/Behaviors/BasilanJSOW.bgf
!/Behaviors/BasilanFly.bgf
!/Behaviors/JSOWBehavior.bgf
!/Behaviors/LMBCommandPost.bgf
!/Directives/JSOWDirective.dgf
!/Directives/MaverickDirective.dgf
!/Scenarios/BasilanFullJSOW.nscen
!/Scenarios/BasilanMacrosWP.nscen
!/Scenarios/Basilan.nscen
!/Scenarios/BasilanSOW.nscen
!/Scenarios/BasilanJSOW.nscen
!/Behaviors/MaverickToPoint.bgf
!/PlayerTemplates/Weapon/Air_to_Surface/AGM65E.xml
!/PlayerTemplates/Air/Fighter/F-15.xml
!/PlayerComponents/Weapon/Air-to-Surface/AGM-DraperMaverick.xml
!/PlayerComponents/Weapon/Air-to-Surface/AGM-65E.xml

UPDATE

我尝试了一个稍有不同的范例,并且看起来效果更好,我还包括重新包含相关文件夹,而不仅仅是文件。这就是为什么这是一个与以下问题不同的问题:.gitignore排除文件夹但包括特定的子文件夹

!/Behaviors/Macros/**
!/Behaviors/Macros/FlyWaypoint.bgf

!/PlayerTemplates/Weapon/**
!/PlayerTemplates/Air/**
!/PlayerComponents/Weapon/**

!/PlayerTemplates/Weapon/Air_to_Surface/AGM65E.xml
!/PlayerTemplates/Air/Fighter/F-15.xml
!/PlayerComponents/Weapon/Air-to-Surface/AGM-DraperMaverick.xml
!/PlayerComponents/Weapon/Air-to-Surface/AGM-65E.xml

但是我不能确定这是否是由于强制添加引起的。

0 个答案:

没有答案