2016-03-16 59 views
0

我知道SO上有十几个帖子。有些可以追溯到'12。我无法得到它的工作。在现代世界的情况下。我有一个结构的angularJS项目像如何忽略在GIT中提交的子目录

. 
├── app 
│ ├── app.js 
│ ├── assets 
│ ├── bower_components 
│ ├── controllers 
│ ├── index.html 
│ ├── services 
│ └── views 
├── bower.json 
├── e2e 
│ ├── pages 
│ ├── protractor.conf.js 
│ └── scenarios 
├── karma.conf.js 
├── LICENSE 
├── package.json 
└── README.md 
|__ .gitignore 

在我bower_components,我已经编辑模块,以满足我的需求,我需要提交它,这样的变化反映了每个人。但不是所有的bower_components。

所以我在app/bower_components/chartist中有一个模块,我想提交其余的我想忽略的模块。

here我想这

logs/* 
!.gitkeep 
node_modules/ 

!app/bower_components/ 

app/bower_components/* 
!app/bower_components/chartist 

tmp 
.DS_Store 
.idea 
app/jspm_packages 

它不工作。在我的git状态中,我将此视为输出

.gitignore~ 
app/bower_components/ 

它包含所有bower_components。为什么?我如何只包含图表文件夹并省略其余部分? 规则是排斥太过混乱。任何人都可以为我简化它吗?

编辑:我的问题是询问如何在.gitignore中添加文件夹,但在其中保留一个子文件夹。我需要跟踪更改。我不明白怎么能有人考虑这个问题的重复。

+1

尝试删除!app/bower_components /,我的结构与你不一样,但对于我来说,提供的链接模式工作正常:1. maindir/* 2.!maindir/subdir1将此添加到.itignore ,命令git add --all只广告subdir1,即使在maindir目录中有更多的子目录和文件 – Zavael

+0

@Zavael你能写这个答案,以便我可以接受它 –

+0

可能有[Stop tracking and ignore更改为Git中的文件](http://stackoverflow.com/questions/936249/stop-tracking-and-ignore-changes-to-a-file-in-git) – 1615903

回答

1

Git将继续跟踪回购中的文件,即使它们被忽略。如果在将dir添加到.gitignore时检入了所有app/bower_components,那么git仍会跟踪对已存在于repo中的任何文件的更改。如果你在那里创建一个新文件,它将被忽略。

如果您只希望追踪其中的一个文件,请从回购中删除其余文件。现在你可以将目录下的gitignore,然后git add -f app/bower_components/chartist。这会将文件添加到回购站,覆盖您的gitignore。将会跟踪文件的更改。

另外,使用你的gitignore与!app/bower_components/chartist线。您不需要强制添加,并且它作为您有意不忽略该文件的文档。

+0

请参阅http://stackoverflow.com/questions/936249/stop-跟踪和忽略,changes- to-a-file-in-git以了解如何停止跟踪'app/bower_components'。 (或者只是'git rm --cached app/bower_components')。 –

0

创建一个.gitignore文件,所以要创建一个filename.txt文件并更改扩展名。

然后通过这个命令来更改该文件的名称: -

rename filename.txt .gitignore 

然后你就可以打开该文件,并写入所有不想将在存储库中添加的文件。

app/bower_components/ 

模式目录/排除名为dir和(隐式)它下面的一切目录。对于dir /,Git永远不会查看dir下的任何内容,因此决不会将任何“un-exclude”模式应用于dir下的任何内容。

app/bower_components/* 

!app/bower_components/chartist 

模式目录/ *没有提到目录本身;它只是排除了dir下的所有内容。使用dir/*,Git会处理dir的直接内容,给其他模式一个“解除”某些内容(!dir/sub /)的机会。