无法将文件夹添加到 git 存储库

0 git git-add

我认为这个问题已经在这个问题下讨论过:

递归地将整个文件夹添加到存储库

但是我仍然无法将一些文件夹添加到 git 存储库,我需要帮助。

$ git status
...
# modified:   folder_to_add1 (modified content, untracked content)
# modified:   folder_to_add2 (modified content, untracked content)
Run Code Online (Sandbox Code Playgroud)

这些文件夹原本属于另一个git存储库,所以我进入这些文件夹并删除了里面的.git文件夹。

然后我跑了:

$ git add folder_to_add1
$ git add folder_to_add2
$ git status 
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       ../filestore/
#       ../../stdout
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)

无法提交folder_to_add1 和folder_to_add2。

我的存储库中没有 .gitignore 文件。

我还能尝试什么?谢谢。


我将尝试添加有关我的原始帖子的更多信息,该帖子在上一行之前结束。我将感谢您对“这”被认为是正确的战争的评论,以进一步澄清我原来的问题,我是一个在这里发帖的完整新手。

亲爱的 torek,感谢您非常详细的回答。我想我必须非常仔细地阅读它才能理解子模块概念所涉及的微妙之处。我想子模块非常像我更熟悉的“svn externals”。

看了你的答案十分钟后,我的答案是:“我根本不需要子模块或子git”。我的意思是:我希望这些文件夹(最初是子模块)仅属于一个项目而不是多个项目(使用一张图)。

我确信你的答案在某个地方告诉我为什么会发生这种情况,但事实是我需要将我的项目从一台电脑复制到另一台电脑,并使用 git 来执行此操作,这些文件夹实际上不包含在带有“的索引中” git add " 无论其中是否有 .git 子文件夹。

“.gitmodules”文件似乎不存在。运行后:

$ find . -name .gitmodules -print 
Run Code Online (Sandbox Code Playgroud)

在项目的主文件夹中我没有​​得到任何结果。

为了能够将这些文件夹添加到新的(不同的)存储库,我所做的是:

$ cp -r myproject /home/myusername/newproject
$ cd /home/myusername/newproject/folder_to_add1
$ rm -r .git
$ cd ../folder_to_add2
$ rm -r .git
$ cd /home/myusername/newproject
$ git init
$ git add .
$ git commit -m "Adding all existing files to the new repository"
Run Code Online (Sandbox Code Playgroud)

但我认为这样做会丢失所有文件更改历史记录。

Way*_*eio 5

上面的长答案很好,但解决它的 TL;DR 是:

  1. 删除子仓库的 .git 仓库
  2. 跑步git rm -r --cached .
  3. 跑步git add .

然后git status应该显示添加的文件夹