首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了重复的子目录外,其他所有内容都要给出。

除了重复的子目录外,其他所有内容都要给出。
EN

Stack Overflow用户
提问于 2017-11-04 17:39:29
回答 1查看 140关注 0票数 1

我有以下目录结构:

代码语言:javascript
复制
./
├── proj-1
│   ├── README.md
│   ├── src/
│   └── test/
└── proj-2
    ├── README.md
    ├── src/
    └── test/

除了使用根目录中的一个src/文件的.gitignore目录之外,我如何忽略所有内容?

我试过:

代码语言:javascript
复制
*
!.gitignore
!/*/src/
!/*/src/*

但是,在运行git status之后,这似乎并没有找到我想要的目录。

有小费吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-04 19:36:42

您必须递归地取消忽略src目录树的所有父目录,然后忽略它们的内容:

代码语言:javascript
复制
# Ignore everything
*

# Unignore .gitignore
!.gitignore

# Unignore all directories
!*/

# Ignore contents of all directories
*/*

# Unignore all src subdirectories
!*/src/

# Unignore directory tree under src subdirectories
!*/src/**

所以,对于一棵看起来像

代码语言:javascript
复制
.
├── proj-1
│   ├── README.md
│   ├── src
│   │   ├── srcfile1
│   │   ├── srcfile2
│   │   ├── srcfile3
│   │   └── subsrc
│   │       ├── subsrcfile1
│   │       ├── subsrcfile2
│   │       └── subsrcfile3
│   └── test
│       ├── testfile1
│       ├── testfile2
│       └── testfile3
├── proj-2
│   ├── README.md
│   ├── src
│   │   ├── srcfile1
│   │   ├── srcfile2
│   │   └── srcfile3
│   └── test
│       ├── testfile1
│       ├── testfile2
│       └── testfile3
└── proj-3
    └── file

你得到了这种状态

代码语言:javascript
复制
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .gitignore
    proj-1/
    proj-2/

nothing added to commit but untracked files present (use "git add" to track)

在添加所有东西之后,你会得到

代码语言:javascript
复制
$ git add * .gitignore 

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   .gitignore
        new file:   proj-1/src/srcfile1
        new file:   proj-1/src/srcfile2
        new file:   proj-1/src/srcfile3
        new file:   proj-1/src/subsrc/subsrcfile1
        new file:   proj-1/src/subsrc/subsrcfile2
        new file:   proj-1/src/subsrc/subsrcfile3
        new file:   proj-2/src/srcfile1
        new file:   proj-2/src/srcfile2
        new file:   proj-2/src/srcfile3

必须显式地添加.gitignore,因为shell没有展开*以包含隐藏文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47113610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档