首页 > 解决方案 > 无法将文件夹添加到 git repo

问题描述

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

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

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

$ git status
...
# modified:   folder_to_add1 (modified content, untracked content)
# modified:   folder_to_add2 (modified content, untracked content)

这些文件夹原本属于另一个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")

folder_to_add1 和 folder_to_add2 都不能提交。

我的仓库中没有 .gitignore 文件。

我还能尝试什么?谢谢。


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

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

从您的答案阅读十分钟后,我的答案是:“我根本不需要子模块或 subgit”。我的意思是:我希望这些最初是子模块的文件夹成为一个项目的一部分,而不是多个项目的一部分(使用一个图)。

我相信你的回答在某个地方告诉我为什么会这样,但事实是我需要将我的项目从一台 PC 复制到另一台 PC 并使用 git 来完成,这些文件夹实际上不包含在索引中git add ",无论其中是否有 .git 子文件夹。

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

$ find . -name .gitmodules -print 

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

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

$ 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"

但我认为我通过这种方式丢失了所有文件更改历史记录。

标签: gitgit-add

解决方案


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

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

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


推荐阅读