2016-11-07 24 views
2

我在components/root/js/components/example/js/有目录,我不希望这些被Git跟踪。.gitignore在特定深度的目录?

但是,我有一个目录components/root/js2/plugins/js/,我想跟踪Git。

我抬头看了这个在线,只发现**,我相信这并不能解决我的问题。

我现在.gitconfig包含行:

js/ 

我试图将此更改为:

components/**/js/ 

但这对于components/root/js/匹配,components/example/js/,也components/root/js2/plugins/js/(下面的一个文件夹js第二级components - 我只想在第二级忽略js文件夹)。

我该如何实现这个目标?

+0

你真的指'components/root/js2/plugins/js'而不是'components/root/js/plugins/js'吗? –

+0

@ArkadiuszDrabczyk是的 - 基本上,我不想同步'components/root/js',但我想同步'components/root/js2',我也想同步'components/root/js2/plugins/js',如果这是有道理的。我也希望这样可以申请任何其他目录名称,例如'components/abcd/js2/plugins/js'。 – think123

+0

嗯,我不知道我跟着 - 如果你添加了'components/root/js /'和'components/example/js /'到你的'.gitignore',那么停止'git'跟踪'components/root/JS2 /'?它不是被忽略的目录的子目录。 –

回答

1

OK,这个怎么样:

js/ 
!components/root/js2/plugins/js/ 

,而忽略叫js除了!之后指定以外的所有目录。在这种情况下,git将忽略components/root/js/,但不会忽略components/root/js2/plugins/js/。因为它在man gitignore据说

**不会因为工作:

尾随 “**” 内相匹配的一切。例如,“abc/**” 匹配目录“abc”内的所有文件,相对于.gitignore文件的位置 具有无限深度。

+0

够好 - 谢谢! – think123

1

如果稍后移动目录,则可以将.gitigore文件放在任何目录中,这将成为更可靠的解决方案。

我将创建2 .gitignore文件:

  • 一个在项目的根/.gitignore不包括js

    JS

  • 一位在plugins目录/components/root/js2/plugins/.gitignore它覆盖了根.gitignore

    !js

如果plugins目录稍后将被移动,例如,到components/root/plugins.gitignore也会被移动。

如果您配置根目录.gitignore中的所有内容,则不要忘记在目录移动时编辑根目录.gitignore