我知道.gitignore文件隐藏了Git版本控制中指定的文件.我有一个项目(LaTeX),它在运行时会生成许多额外的文件(.auth,.dvi,.pdf,日志等),但我不希望这些文件被跟踪.
我知道我可以(也许应该)这样做所有这些文件放在项目中的一个单独的子文件夹中,因为我可以忽略该文件夹.
但是,有没有可行的方法将输出文件保存在项目树的根目录中,并使用.gitignore忽略除了我用Git跟踪的文件之外的所有内容?就像是
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
Run Code Online (Sandbox Code Playgroud) 除非在特殊文件中指定,否则可以让git默认忽略所有文件?
已经有几个类似的问题,但没有一个答案对我有用.
我想忽略我的存储库下面的文件夹中的所有内容,除了带有*.foo的文件
(如果有人想知道如何证明这一点 - 我实际上正在为我的所有"逻辑"项目 - mac上的音乐软件 - 创建一个git存储库 - 但我只想存储实际的项目文件*.logic)
我要拼出来,所以我们都在同一个盘子里.这是我从头开始做的事情:
建立:
mkdir temp
cd temp
mkdir testdir
cd testdir
touch include.foo
touch dontinclude.bad
cd..
git init
touch .gitignore
Run Code Online (Sandbox Code Playgroud)
将其粘贴到.gitignore中
# Ignore all
/*
# But not these files...
!.gitignore
!*.foo
Run Code Online (Sandbox Code Playgroud)
git状态
唯一没有跟踪的文件是.gitignore
如果我输入'git add'. - 没有变化,只看到.gitignore,我的2个文件被忽略.
为什么这不起作用,你怎么能改变上面的程序使它工作?
这是我从中获取.gitignore文件的极其相似的问题.我正在使用git --version 1.7.7(也试过1.7.3) - .gitignore忽略所有文件,然后递归地允许某种类型的文件
我有一个目录树,有许多不同的文件.父目录上有300个目录.每个目录可以有其他子目录.
我只想在所有子目录上跟踪*.cocci.这是我的.gitignore:
*
!*.cocci
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为不跟踪子目录上的文件.我怎么能告诉git我只想在所有子目录上跟踪*.cocci?
我为我的主文件夹创建了一个存储库.这是我的.gitignore档案:
!.vim/plugin/*
!.vim/doc/*
.*
*
.viminfo
.vim/.netrwhist
.vim-fuf-data/file/stats
bin/dwm/dwm
Run Code Online (Sandbox Code Playgroud)
所以当我在里面创建一个新文件时,.vim/plugin我预计在显示git status这个文件之后,但是没有..为什么?
编辑:在一对答案后,我改变了反向忽略线的位置,但是问题是相同的:我在.vim/plugin文件夹中创建的新文件后面没有显示git status..
.*
*
.viminfo
.vim/.netrwhist
.vim-fuf-data/file/stats
bin/dwm/dwm
!.vim/plugin/*
!.vim/doc/*
Run Code Online (Sandbox Code Playgroud) $ git --version
git version 2.6.4
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个重复,但另一个问题的答案没有帮助.
文件夹结构
/
-- dist/
---- samples/
---- README.md
---- foo/
---- bar/
---- baz.js
Run Code Online (Sandbox Code Playgroud)
除了samples和README.md之外,我想忽略dist中的所有内容.我的前几次尝试都没有用,所以我决定放弃自述文件:
dist
!dist/samples/README.md
Run Code Online (Sandbox Code Playgroud)
README是一个全新的文件.dist文件夹根本不在源代码管理中.但是当我检查忽略时,它仍然被忽略:
$ git check-ignore dist/samples/README.md
dist/samples/README.md
$ git check-ignore src
# empty line
Run Code Online (Sandbox Code Playgroud)
我试过了:
dist/**/README.md/*的末尾添加一个dist唯一被忽略的是*.js,*.js.map,temp和node_modules.有趣的是,Webstorm认为文件没有被忽略(它会改变颜色),但命令行工具确实认为它被忽略了.
我不明白我做错了什么.模式似乎很简单:
但它显然不起作用.
我想这可以解决问题:
*
!/dir1/
!/dir2/
!/file1
!/file2
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,事实并非如此。如果我在星号前加一个斜杠,它似乎可以工作。但我真的不明白为什么在这个改变之前它不起作用。有人能指点一下吗?