首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有递归应用.gitignore

没有递归应用.gitignore
EN

Stack Overflow用户
提问于 2018-02-04 22:51:23
回答 2查看 326关注 0票数 2

的最终目标:有git递归忽略*.abc类型的文件

问题: Git

描述:

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

代码语言:javascript
运行
复制
/**/*.abc

我发出以下命令并获得以下输出

代码语言:javascript
运行
复制
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文件,并再次运行。

代码语言:javascript
运行
复制
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)从缓存的中删除

来源

代码语言:javascript
运行
复制
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)检查文件编码

来源

代码语言:javascript
运行
复制
file -bi /home/alma/project-origin/.gitignore
text/plain; charset=us-ascii

(C)检查尾随空间

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

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

代码语言:javascript
运行
复制
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检查-忽略顶层目录中的-v

这是我最接近解决这个问题的方法。

代码语言:javascript
运行
复制
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)有关。有人能帮忙吗。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-04 23:20:07

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

代码语言:javascript
运行
复制
mkdir outer && cd outer
git init
echo '/**/*.txt/' > .gitignore
touch foo.txt
git status
# Untracked file '.gitignore'
# No mention of 'foo.txt'

mkdir inner && cd inner
git init
touch foo.txt
git status
# Untracked file 'foo.txt'

由于您的内部存储库似乎没有刻意创建,所以我建议删除它的.git/目录(在做了您认为合适的备份之后)。这将使目录的内容受制于外部存储库,.gitignore现在应该生效。

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

票数 1
EN

Stack Overflow用户

发布于 2018-02-04 23:09:02

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

有关https://www.atlassian.com/git/tutorials/gitignore语法(和其他全局)的一些示例,请参见**

例如:

代码语言:javascript
运行
复制
$ 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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48613807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档