.gitignore未被递归应用
最终目标: 让git递归地忽略类型为.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
*.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