我尝试过:
git 子模块
从父存储库中调用
git submodule add [-f] <url>
git config -f .gitmodules submodule.<name>.ignore all
这让父模块忽略对子模块所做的所有更改,但在暂存子模块之后,我仍然需要提交 gitlink 并将其推送到我的父模块上游。我还尝试将带有子模块的文件夹添加到
.gitignore
,但是如果我从父级运行 git status
,gitlink 仍然会列出。
git 子树
从父存储库中调用
git subtree add --prefix <name> <url> main
但同样在这里,父存储库并不完全独立于子模块。
嵌套存储库
我排除了
.gitignore
中的一个文件夹,然后将另一个存储库克隆到该文件夹中。父存储库现在忽略此“子存储库”中的所有更改,但“子存储库”会跟踪父存储库中的更改,这也不是我想要的。
目标
我需要另一个存储库的子文件夹中的完全独立的存储库。父文件夹中的更改不应影响子文件夹中的存储库,子文件夹中的存储库的更改不应影响父存储库。
如何实现此设置?
将文件夹添加到
.gitignore
就足够了。
您的情况有问题。因为进行纯粹的实验清楚地表明,忽略“孩子”是有帮助的(开玩笑,对这个怪癖感到抱歉)
git init parent
cd parent
echo 'child' > .gitignore
echo 'parent readme' > parent-readme.md
git init child
cd child
echo 'child readme' > child-readme.md
现在你可以看到
git status
里面的parent
显示如下
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
parent-readme.md
nothing added to commit but untracked files present (use "git add" to track)
并且在
git status
中的child
文件夹中是
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
child-readme.md
nothing added to commit but untracked files present (use "git add" to track)