我有以下目录结构:
./
├── proj-1
│ ├── README.md
│ ├── src/
│ └── test/
└── proj-2
├── README.md
├── src/
└── test/除了使用根目录中的一个src/文件的.gitignore目录之外,我如何忽略所有内容?
我试过:
*
!.gitignore
!/*/src/
!/*/src/*但是,在运行git status之后,这似乎并没有找到我想要的目录。
有小费吗?
发布于 2017-11-04 19:36:42
您必须递归地取消忽略src目录树的所有父目录,然后忽略它们的内容:
# 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/**所以,对于一棵看起来像
.
├── 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你得到了这种状态
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)在添加所有东西之后,你会得到
$ 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没有展开*以包含隐藏文件。
https://stackoverflow.com/questions/47113610
复制相似问题