我正用这个撞到墙上,我希望你们有人能帮助我...... 我有这种文件结构:
/public/images/foo
/public/images/foo/default.jpg
/public/images/foo/1/...
/public/images/foo/2/...
/public/images/bar
/public/images/bar/default.jpg
/public/images/bar/1/...
/public/images/bar/2/...
/public/images/baz
/public/images/baz/default.jpg
/public/images/baz/1/...
/public/images/baz/2/...
/public/images/other/...
我想忽略images
内的所有内容,但保留default.jpg
个文件和other
文件夹及其内容。我的.gitignore中的内容无法按预期工作,default.jpg
文件仍被忽略:
/public/images/*
!/public/images/*/default.jpg
!/public/images/other/
感谢您的帮助!
答案 0 :(得分:1)
!public/images/**/default.jpg
应该有2颗星而不是1代表当前目录。
答案 1 :(得分:1)
好的,我找到了一位朋友的解决方案:
/public/images/*
!/public/images/*/
/public/images/*/*
!/public/images/other/*
!/public/images/*/default.jpg
在这里我可以忘记images
内的所有内容,但是通过命名它们来保留一些文件夹并保留一级default.jpg
文件。问题是在使用子目录白名单时需要具体。
答案 2 :(得分:-2)
如果您的文件已经存储在存储库中,则必须删除它们,然后才能“忽略”它们。
git rm --cached <file>
现在您可以使用.gitignore
文件。
如果您想忽略特定文件(在您的情况下,您希望文件夹本身适合您的csse),您可以使用assume-unchanged
标记
https://git-scm.com/docs/git-update-index
指定此标志时,不会更新为路径记录的对象名称 相反,此选项设置/取消设置路径的“假设未更改”位。
当“假定未更改”位打开时,用户承诺不更改文件并允许Git假定工作树文件与索引中记录的文件匹配。如果要更改工作树文件,则需要取消设置该位以告知Git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大项目时,这有时很有用。
如果需要在索引中修改此文件,Git将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。