繁体   English   中英

如何忽略子目录在GIT中的提交

[英]How to ignore a sub-directory from being committed in GIT

我知道在SO上有很多帖子。 有些可以追溯到'12。 我无法使其正常工作。 在现代世界中。 我有一个angularJS项目,其结构如下

.
├── 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中有一个模块,想要提交其余部分,而忽略。

这里我尝试了这个

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。 为什么? 如何只包含Chartist文件夹,而忽略其余的文件夹? 排除规则太令人困惑了。 谁能为我简化一下?

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

即使忽略,Git也会继续跟踪存储库中的文件。 如果在将目录添加到.gitignore时已签入所有app/bower_components ,则git仍会跟踪对存储库中已经存在的任何文件的更改。 如果在其中创建新文件,它将被忽略。

如果只想跟踪其中的一个文件,请从存储库中删除其余文件。 现在,您可以gitignore目录,然后git add -f app/bower_components/chartist 这会将文件添加到仓库中,覆盖您的gitignore。 以后将跟踪对文件的更改。

或者,将您的gitignore与!app/bower_components/chartist行一起使用。 您无需强制添加,它可以作为您有意不忽略该文件的文档。

创建一个.gitignore文件,因此,只需创建一个filename.txt文件并更改扩展名即可。

然后通过以下命令更改该文件的名称:

rename filename.txt .gitignore

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

app/bower_components/

模式dir /排除了一个名为dir的目录,并暗含了该目录下的所有内容。 使用dir /,Git将永远不会查看dir下的任何内容,因此绝不会将任何“非排除”模式应用于dir下的任何内容。

app/bower_components/*

!app/bower_components/chartist

模式dir / *不说明dir本身; 它只是排除dir下的所有内容。 使用dir / *,Git将处理dir的直接内容,使其他模式有机会“取消排除”部分内容(!dir / sub /)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM