如何从主 git 存储库中删除未跟踪的目录树(子模块/子存储库)?
How do I remove untracked directory tree (submodule / sub-repository) from main git repository?
对于我来说,我似乎无法从主 git 存储库中 'remove' 未跟踪的 sub-module/directory。我尝试了各种语法,但我不断收到 'pathspec' 错误,指出没有匹配项,即使该文件夹位于普通站点中。我将它添加到 .gitignore
并且它还没有被添加或提交到主存储库,但是当我 运行 [=14= 时它一直以红色显示在 Untracked files:
下] 而且我无法摆脱它。 git clean -n
也什么都不显示。
关于我在这里做错了什么的任何线索?
要明确:我不想删除子仓库,我只是想完全单独跟踪子仓库并让主仓库完全忽略它,就好像它不存在一样。
### /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
$
谢谢。
磁盘上有 files/directories 未跟踪的文件,git 尚未跟踪这些文件,也没有明确忽略它们。
您可以告诉 git 忽略它,或者从磁盘中删除 file/directory :
# 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
注意:实际上有几种方法可以忽略file/directory,例如:
When would you use .git/info/exclude instead of .gitignore to exclude files?
[编辑]
为什么 ntc-templates/**
在 .gitignore
中“不起作用”:
ntc-templates/
本身就是一个 git 仓库,因此它被视为一个潜在的子模块。父 git 存储库不会查看 ntc-templates/
下的文件(它们将由子存储库本身处理),因此在 ntc-templates/
下挖掘的模式(如 ntc-templates/**
)不适用.
对于我来说,我似乎无法从主 git 存储库中 'remove' 未跟踪的 sub-module/directory。我尝试了各种语法,但我不断收到 'pathspec' 错误,指出没有匹配项,即使该文件夹位于普通站点中。我将它添加到 .gitignore
并且它还没有被添加或提交到主存储库,但是当我 运行 [=14= 时它一直以红色显示在 Untracked files:
下] 而且我无法摆脱它。 git clean -n
也什么都不显示。
关于我在这里做错了什么的任何线索?
要明确:我不想删除子仓库,我只是想完全单独跟踪子仓库并让主仓库完全忽略它,就好像它不存在一样。
### /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
$
谢谢。
磁盘上有 files/directories 未跟踪的文件,git 尚未跟踪这些文件,也没有明确忽略它们。
您可以告诉 git 忽略它,或者从磁盘中删除 file/directory :
# 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
注意:实际上有几种方法可以忽略file/directory,例如:
When would you use .git/info/exclude instead of .gitignore to exclude files?
[编辑]
为什么 ntc-templates/**
在 .gitignore
中“不起作用”:
ntc-templates/
本身就是一个 git 仓库,因此它被视为一个潜在的子模块。父 git 存储库不会查看 ntc-templates/
下的文件(它们将由子存储库本身处理),因此在 ntc-templates/
下挖掘的模式(如 ntc-templates/**
)不适用.