尽管有.gitignore文件但强制添加

Mar*_*ark 375 git gitignore

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

Dan*_*mer 516

man git-add:

   -f, --force
       Allow adding otherwise ignored files.
Run Code Online (Sandbox Code Playgroud)

所以运行这个

git add --force my/ignore/file.foo
Run Code Online (Sandbox Code Playgroud)

  • 嗯,这不起作用,在git状态下,文件仍未显示 (9认同)
  • 好吧,我测试了它,以确保它真的有效,它确实有效.你能描述一下你的environemnt(OS,git版本......)吗?这就是我基本上所做的:`echo"/ foo">> .gitignore; echo"bar"> foo; git add foo#应该抛出一个错误; git add -p foo#works`(无法在注释中粘贴换行符,逐个执行命令 (5认同)
  • 同样的事情发生在我身上,我以前在我的文件上运行了git update-index --asume-unchanged.我不得不用--no-assume-unchanged来撤消它并且它有效 (4认同)
  • 这仅适用于我使用通配符,在Windows上使用git 1.9.5,即使在尝试--no - assume-unchanged之后也是如此."git add - f <filename>"什么都不做,但"git add -f*"有效.使用TortoiseGit也有效. (4认同)

Gab*_*les 20

如何取消忽略被忽略文件夹中的某些选定内容(文件或文件夹)

如果您忽略了这样的目录内容:

/ignored_dir/*    # ignore the **contents of** this dir!
Run Code Online (Sandbox Code Playgroud)

那么你可以取消忽略其中的文件或目录,如下所示:

!/ignored_dir/special_file_to_include   # Do NOT ignore this file--DO include it!
!/ignored_dir/special_dir_to_include/   # And do NOT ignore this dir--DO include it!
Run Code Online (Sandbox Code Playgroud)

但是,如果您像这样直接忽略了“ignored_dir” :

/ignored_dir/     # ignore this directory **directly**
Run Code Online (Sandbox Code Playgroud)

那么上述!尝试取消忽略某些文件或文件夹的规则将不起作用!因此,在这种情况下,请从使用此样式:切换/ignored_dir/到此样式:/ignored_dir/*,然后将!如上所示的规则添加到 UNignore 该目录中的某些内容!

参考:

  1. 取消忽略 Git 中被忽略目录的子目录
  2. [我的eRCaGuy_dotfiles存储库,其中包含包含这些注释和演示的示例 .gitignore 文件]:eRCaGuy_dotfiles/.gitignore


A-S*_*A-S 18

尽管DanielBöhmer的工作解决方案,Ohad Schneider在评论中提供了更好的解决方案:

如果文件通常被忽略,并且您强制添加它 - 将来可能会被意外地忽略(比如删除文件时,然后进行提交并重新创建文件).

你应该在.gitignore文件中忽略它,就像那样: 在Git中忽略目录的Unignore子目录

  • 这不是一个"更好"的解决方案.这是解决不同问题的方法. (12认同)
  • 这是对的.我正在为小数据文件使用--force选项,然后重新排列了一些文件夹结构并破坏了所有强制跟踪文件.但是:在`.gitignore`中使用`!specific-file-name.txt`没有文件夹层次结构,这种方式跟踪将跟随repo周围的文件. (3认同)

sha*_*rdy 6

实现它的另一种方法是临时编辑 gitignore 文件,添加该文件,然后恢复回 gitignore。我觉得有点老套

  • 我同意,这不是你想做的。 (15认同)