我可以在git忽略的文件夹中嵌套git repo吗?

我可以在git忽略的文件夹中嵌套git repo吗?,git,github,git-submodules,Git,Github,Git Submodules,我有一个git repo,其中包含以下文件夹: _includes/ _layouts/ _plugins/ _posts/ _site/ _站点文件夹添加到.gitignore文件中 现在我可以在站点文件夹中有一个git repo,其中包含用于推拉的不同远程repo吗?会有冲突吗 我已经研究过git子模块,但我认为如果上述方法能够奏效,那么在我的情况下,这将是一种过分的杀伤力。我认为它应该奏效。对于主回购,\u站点文件夹不存在。所以你有什么在里面并不重要。当你cd进入\u网站时,你

我有一个git repo,其中包含以下文件夹:

 _includes/
 _layouts/
 _plugins/
 _posts/
 _site/
_站点文件夹添加到
.gitignore
文件中

现在我可以在站点文件夹中有一个git repo,其中包含用于推拉的不同远程repo吗?会有冲突吗


我已经研究过git子模块,但我认为如果上述方法能够奏效,那么在我的情况下,这将是一种过分的杀伤力。

我认为它应该奏效。对于主回购,
\u站点
文件夹不存在。所以你有什么在里面并不重要。当你
cd
进入
\u网站
时,你就可以独立回购了。

是的,我刚刚试过。以下是我的命令行会话:

$ mkdir temp
$ cd temp
$ git init 
Initialized empty Git repository in /Users/mpdaugherty/temp/.git/
$ git add .
$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
$ echo 'ignore' >> .gitignore
$ git add .
$ git commit -a -m 'first commit'
[master (root-commit) 17d293c] first commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore
$ mkdir ignore
$ git status
# On branch master
nothing to commit (working directory clean)
$ cd ignore
$ git init .
Initialized empty Git repository in /Users/mpdaugherty/temp/ignore/.git/
$ echo 'Some text' > somefile.txt
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   somefile.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git commit -a -m 'initial commit'
[master (root-commit) 107f980] initial commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 somefile.txt
$ cd ..
$ git status
# On branch master
nothing to commit (working directory clean)
$mkdir温度
$cd临时工
$git init
已在/Users/mpdaugherty/temp/.Git中初始化空Git存储库/
$git add。
$git状态
#论分行行长
#
#初始提交
#
无需提交(创建/复制文件并使用“git add”跟踪)
$echo'ignore'>>。gitignore
$git add。
$git commit-a-m“首次提交”
[主(根提交)17d293c]第一次提交
1个文件已更改,1个插入(+),0个删除(-)
创建模式100644.gitignore
$mkdir忽略
$git状态
#论分行行长
没有要提交的内容(工作目录清理)
$cd忽略
$git init。
已在/Users/mpdaugherty/temp/ignore/.Git中初始化空Git存储库/
$echo'Some text'>somefile.txt
$git状态
#论分行行长
#
#初始提交
#
#未跟踪的文件:
#(使用“git add…”包含在将提交的内容中)
#
#somefile.txt
提交时未添加任何内容,但存在未跟踪的文件(使用“git add”跟踪)
$git add。
$git commit-a-m“初始提交”
[主(根提交)107f980]初始提交
1个文件已更改,1个插入(+),0个删除(-)
创建模式100644 somefile.txt
$cd。。
$git状态
#论分行行长
没有要提交的内容(工作目录清理)

如果它能工作,我会感到惊讶,即使它能工作,你也会有惊喜,因为它不是为工作而设计的。Git子模块并不过分,只需要花一些时间来理解基本知识:)另外,通过不使用子模块,您失去了告诉主回购站点的修订版的能力“您失去了告诉主回购站点的修订版的能力”但是
\u site
位于
.gitignore
中,因此main repo对
\u site
文件夹一无所知。当然,但这已经不理想了:)但是,请记住,这可能会导致一些问题。问题之一是外部repo中的
gitclean-dfx
将删除嵌套的repo。因此,用户必须小心。也许最好将文件夹符号化。如果运行
git clean
,符号链接将被删除,嵌套的回购将保持完整。