2011-11-04 68 views
251

有没有办法强制git添加文件,尽管.gitignore文件?强制添加,尽管.gitignore文件

+3

一个更好的问题可能是 - 为什么你想这样做?如果你想跟踪一个文件,取消对它的管理(在'.gitignore'文件中用'!'前缀它的模式,例如'!dont/ignore/this/file')。 –

+4

@OhadSchneider如果您强制提交构建文件到另一个分支,这很有用。一些项目,比如StrongLoop,用于安全部署 – Deminetix

+4

@OhadSchneider对我们来说,更多的原因是大多数开发人员在Visual Studio 2015中安装git,这会在用户文件夹中添加一个全局gitignore。这不包括诸如* .dll和* .exe的文件。这对于我们的新项目来说很好,它只使用在构建过程中检索的nuget包,但对于少数较旧的项目,我们仍然使用在解决方案中手动引用的dll。对于那些项目,我们希望手动包含它们,而不是告诉每个开发人员评论全球gitignore中的* .dll和* .exe文件。 – Nullius

回答

354

man git-add

-f, --force 
     Allow adding otherwise ignored files. 

那么运行这个

git add --force my/ignore/file.foo 
+6

Uhm,不工作,在git状态下,文件仍然没有显示 – Mark

+4

好吧,我测试了它,以确保它真的有效,它确实如此。你能描述一下你的environemnt(操作系统,git版本......)吗?这是我基本上完成的:'echo“/ foo”>> .gitignore; echo“bar”> foo; git add foo#应该抛出一个错误; git add -p foo#works'(不能在评论中粘贴换行符,1执行命令1 –

+1

我的错 - 重新克隆回购版现在可以运行了。谢谢 – Mark

6

尽管丹尼尔BÖHMER的工作方案,辖施耐德提出的意见更好的解决方案:

如果该文件通常被忽略,并强制添加它 - 将来可能会再次意外忽略它(例如文件被删除时,然后提交并重新创建文件)。

你应该只在这样的的.gitignore文件未忽略它: Unignore subdirectories of ignored directories in Git

+1

这是正确的。 - 为小数据文件增加选项,然后重新排列一小部分文件夹摧毁和破坏所有受到追踪力量的文件。但是,在'.gitignore'中使用没有文件夹层次结构的'!specific-file-name.txt',这种跟踪方式会跟随回购文件。 – Merlin

+0

这取决于场景,例如有时你想排除所有文件夹中的“1.txt”,有时候“folder1/*。txt” –

1

实现这将是暂时的编辑gitignore文件,添加文件,然后恢复了gitignore的另一种方式。有点哈克我觉得

+0

我同意,这不是你想要做的。 – Merlin

相关问题