首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从主git存储库中删除未跟踪的目录树(子模块/子存储库)?

如何从主git存储库中删除未跟踪的目录树(子模块/子存储库)?
EN

Stack Overflow用户
提问于 2021-02-10 08:13:17
回答 1查看 86关注 0票数 0

在我的一生中,我似乎无法从主git存储库中“删除”一个未跟踪的子模块/目录。我尝试过各种语法,但是我一直得到“pathspec”错误,说明没有匹配,即使文件夹在普通站点中。我将它添加到.gitignore中,它还没有被添加或提交到主存储库,但是当我运行git status时,它一直以红色出现在Untracked files:下,而我无法摆脱它。git clean -n也没有显示任何东西。

我在这里做错了什么有什么线索吗?

要明确一点:i不想删除的子回购,我只想完全单独跟踪子回购,让主回购完全忽略它,就好像它不存在一样。

代码语言:javascript
复制
### /home/user/  <-- main/master repository (ACTUAL), separate git-directory

$pwd
/home/user


$cat .git
gitdir: /home/git-repositories/user-main


### /home/user/ntc-templates/   <-- sub repository, separate git-directory

$cat ntc-templates/.git
gitdir: /home/git-repositories/ntc-templates


$git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   .recently-used

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    ntc-templates/     ### <<------------------ how do I get rid of this line?

no changes added to commit (use "git add" and/or "git commit -a")


$git rm -rf ntc-templates/
fatal: pathspec 'ntc-templates/' did not match any files


$git rm -rfn --cached ntc-templates/
fatal: pathspec 'ntc-templates/' did not match any files


$git rm -rfn --cached ntc-templates
fatal: pathspec 'ntc-templates' did not match any files


$git rm -rfn --cached ~/ntc-templates
fatal: pathspec '/home/user/ntc-templates' did not match any files


$ll ntc-templates/
total 168
drwxr-xr-x  6 user user  4096 Feb 10 11:49 ./
drwxr-xr-x 49 user user  4096 Feb 10 11:59 ../
-rw-r--r--  1 user user 29276 Feb 10 11:48 CHANGELOG
-rw-r--r--  1 user user 15443 Feb 10 11:48 development_scripts.py
-rw-r--r--  1 root root    45 Feb 10 11:49 .git
drwxr-xr-x  2 user user  4096 Feb 10 11:48 .github/
-rw-r--r--  1 user user    54 Feb 10 11:48 .github_changelog_generator
-rw-r--r--  1 user user  2622 Feb 10 11:48 .gitignore
drwxr-xr-x  3 user user  4096 Feb 10 11:48 lib/
-rw-r--r--  1 user user   601 Feb 10 11:48 LICENSE
-rw-r--r--  1 user user    29 Feb 10 11:48 MANIFEST.in
-rw-r--r--  1 user user   232 Feb 10 11:48 pyproject.toml
-rw-r--r--  1 user user 22240 Feb 10 11:48 README.md
-rw-r--r--  1 user user  1412 Feb 10 11:48 setup.py
drwxr-xr-x  2 user user 36864 Feb 10 11:48 templates/
drwxr-xr-x 37 user user  4096 Feb 10 11:48 tests/
-rw-r--r--  1 user user   243 Feb 10 11:48 tox.ini
-rw-r--r--  1 user user   101 Feb 10 11:48 .travis.yml
-rw-r--r--  1 user user   703 Feb 10 11:48 .yamllint


$git-ignore | grep ntc
ntc-templates/**
ntc-templates/CHANGELOG
ntc-templates/development_scripts.py
ntc-templates/lib
ntc-templates/LICENSE
ntc-templates/MANIFEST.in
ntc-templates/pyproject.toml
ntc-templates/README.md
ntc-templates/setup.py
ntc-templates/templates
ntc-templates/tests
ntc-templates/tox.ini


$

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 08:26:53

未跟踪的文件是磁盘上的文件/目录,git尚未跟踪这些文件/目录,这些文件也不会被显式忽略。

您可以告诉git忽略它,也可以从磁盘中删除该文件/目录:

代码语言:javascript
复制
# option 1 : ignore that directory
$ echo "nc-templates" >> .gitignore
$ git add .gitignore
$ git commit

# I think this is *not* what you want, but for completeness :
# option 2 : remove the directory
$ rm -rf nc-templates

注意:实际上有几种忽略文件/目录的方法,例如:

When would you use .git/info/exclude instead of .gitignore to exclude files?

编辑

为什么ntc-templates/** in .gitignore“不工作”:

ntc-templates/本身就是一个git,因此它被视为一个潜在的子模块。父subrepo不会查看ntc-templates/下的文件(它们将由子回购本身处理),因此在ntc-templates/下面挖掘的模式(比如ntc-templates/**)不适用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66133116

复制
相关文章

相似问题

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