已经有几个类似的问题,但没有一个答案对我有用.
我想忽略我的存储库下面的文件夹中的所有内容,除了带有*.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忽略所有文件,然后递归地允许某种类型的文件
cam*_*amh 112
您的问题是,/*开头的模式匹配顶级的所有文件和目录 - 包括testdir,因此内部的所有内容都将testdir被忽略.
这就是你想要的:
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore and *.foo files
!.gitignore
!*.foo
Run Code Online (Sandbox Code Playgroud)
git add .使用此配置执行此操作时,您应该会发现只有.gitignore和*.foo文件列为要提交的更改.
| 归档时间: |
|
| 查看次数: |
22462 次 |
| 最近记录: |