我有以下目录结构:
./
├── proj-1
│ ├── README.md
│ ├── src/
│ └── test/
└── proj-2
├── README.md
├── src/
└── test/
如何src/
仅使用.gitignore
根目录中的一个文件忽略目录以外的所有内容?
我试过了:
*
!.gitignore
!/*/src/
!/*/src/*
但这似乎并没有在运行后获取我想要的目录git status
。
有小费吗?
您必须递归取消忽略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
必须明确添加,因为外壳不会扩展*
为包括隐藏文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句