.gitignore未被递归应用

.gitignore未被递归应用,git,gitignore,Git,Gitignore,最终目标: 让git递归地忽略类型为*.abc 问题: 吉特 说明: 我在位于/home/alma/project origin/.gitignore的顶级文件中有以下行 /**/*.abc 我发出以下命令并获得以下输出 cd /home/alma/project-origin/top-secret/subject touch alma-wade.abc git status . On branch master Untracked files: (use "git add <fil

最终目标: 让git递归地忽略类型为
*.abc

问题: 吉特

说明:

我在位于
/home/alma/project origin/.gitignore
的顶级文件中有以下行

/**/*.abc
我发出以下命令并获得以下输出

cd /home/alma/project-origin/top-secret/subject
touch alma-wade.abc
git status .
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        alma-wade.abc

nothing added to commit but untracked files present (use "git add" to track)
我删除了.gitignore本地文件(
rm/home/alma/project origin/top secret/subject/.gitignore
),并开始解决问题

(A)从缓存中删除

(C)检查尾随空格

在vim中打开
/home/alma/project origin/.gitignore
,发出命令
:set list
,并进行目视检查

(D)使用git检查忽略-v

git check-ignore -v --no-index /home/alma/project-origin/top-secret/subject/alma-wade.abc
#no output
echo "*.abc" >> .gitignore
git check-ignore -v --no-index /home/alma/project-origin/top-secret/subject/alma-wade.abc
/home/alma/project-origin/top-secret/subject/.gitignore:1:*.abc       /home/alma/project-origin/top-secret/subject/alma-wade.abc
rm .gitignore
(E)从顶层目录使用git check ignore-v

这是我最近一次解决这个问题

cd /home/alma/project-origin/
echo "/**/*.abc" >> .gitignore
cd /home/alma/project-origin/top-secret/subject/
git check-ignore -v --no-index /home/alma/project-origin/top-secret/subject/alma-wade.abc
#No output
cd /home/alma/project-origin/
git check-ignore -v --no-index /home/alma/project-origin/top-secret/subject/alma-wade.abc
/home/alma/project-origin.gitignore:1:/**/*.abc       /home/alma/project-origin/top-secret/subject/alma-wade.abc

顶层
.gitignore
规则在我从顶层文件夹执行检查时应用,但在子文件夹中时不适用。我束手无策。我唯一能想到的是,这与文件系统(cifs挂载)有关。有人能帮忙吗。

如果你想忽略所有以
.abc
结尾的文件,那么你只需要:
*。abc
-
***
对于匹配中包含子目录名的匹配非常有用

有关
**
语法(和其他glob)的一些示例,请参阅

例如:

$ git init test
$ cd test
$ mkdir -p 1/2
$ touch foo.txt 1/bar.txt 1/2/baz.txt
$ git status
On branch master

No commits yet

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

1/
foo.txt

$ echo "*.txt" >.gitignore
$ git status
On branch master

No commits yet

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

.gitignore
$git初始化测试
$cd测试
$mkdir-p 1/2
$touch foo.txt 1/bar.txt 1/2/baz.txt
$git状态
论分行行长
还没有承诺
未跟踪的文件:
(使用“git add…”包含在将提交的内容中)
1/
foo.txt
$echo“*.txt”>.gitignore
$git状态
论分行行长
还没有承诺
未跟踪的文件:
(使用“git add…”包含在将提交的内容中)
.gitignore

如果您有嵌套的Git存储库,“外部”存储库中的
.gitignore
不会影响“内部”存储库:

mkdir外部和cd外部
初始化
echo'/***.txt/'>.gitignore
touch foo.txt
git状态
#未跟踪的文件“.gitignore”
#没有提到“foo.txt”
mkdir内部和cd内部
初始化
touch foo.txt
git状态
#未跟踪的文件“foo.txt”
由于您有一个内部存储库,您似乎并不是故意创建的,因此我建议删除它的
.git/
目录(在进行您认为合适的备份之后)。这将使该目录的内容受制于外部存储库,
.gitignore
现在应该生效


您可能希望将内部目录中的文件提交到外部存储库。

是否有嵌套存储库?也就是说,在
绝密/
绝密/主题/
中是否还有另一个
.git/
目录?@Chris yes在
绝密
中有一个(我不记得是故意做的)@Chris,这是否只需删除一个
git
文件夹即可?你是说
*.abc
等于
/***.abc
?我的理解是,前者不是递归的,是的,我在答案中添加了一个例子。
git check-ignore -v --no-index /home/alma/project-origin/top-secret/subject/alma-wade.abc
#no output
echo "*.abc" >> .gitignore
git check-ignore -v --no-index /home/alma/project-origin/top-secret/subject/alma-wade.abc
/home/alma/project-origin/top-secret/subject/.gitignore:1:*.abc       /home/alma/project-origin/top-secret/subject/alma-wade.abc
rm .gitignore
cd /home/alma/project-origin/
echo "/**/*.abc" >> .gitignore
cd /home/alma/project-origin/top-secret/subject/
git check-ignore -v --no-index /home/alma/project-origin/top-secret/subject/alma-wade.abc
#No output
cd /home/alma/project-origin/
git check-ignore -v --no-index /home/alma/project-origin/top-secret/subject/alma-wade.abc
/home/alma/project-origin.gitignore:1:/**/*.abc       /home/alma/project-origin/top-secret/subject/alma-wade.abc
$ git init test
$ cd test
$ mkdir -p 1/2
$ touch foo.txt 1/bar.txt 1/2/baz.txt
$ git status
On branch master

No commits yet

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

1/
foo.txt

$ echo "*.txt" >.gitignore
$ git status
On branch master

No commits yet

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

.gitignore