【发布时间】:2018-02-04 22:51:23
【问题描述】:
最终目标:
让 git 递归地忽略 *.abc 类型的文件
问题: 吉特
说明:
我的gitignore 顶级文件位于/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 文件并再次运行它
cd /home/alma/project-origin/top-secret/subject
touch alma-wade.abc
echo "*.abc" >> .gitignore
git status .
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
modified: .gitignore
nothing added to commit but untracked files present (use "git add" to track)
我删除了 .gitignore 本地文件 (rm /home/alma/project-origin/top-secret/subject/.gitignore) 并开始排除故障
(A) 从缓存中删除
cd /home/alma/project-origin/top-secret/subject
git rm -r --cached .
git commit -m "..."
git push origin master
#Successful push
git add .
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)
(B) 检查文件编码
file -bi /home/alma/project-origin/.gitignore
text/plain; charset=us-ascii
(C) 检查尾随空格
在vim中打开/home/alma/project-origin/.gitignore并发出命令:set list并进行目视检查
(D) 使用 git check-ignore -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)有关。有人可以帮忙吗。
【问题讨论】:
-
您有嵌套的存储库吗?即,
top-secret/或top-secret/subject/中是否还有另一个.git/目录? -
@Chris yes in
top-secret有一个(我不记得是故意制造的) -
@Chris 这是否像删除
git文件夹之一一样简单?