无法在Github中将子文件夹添加到远程存储库

时间:2015-12-05 08:09:16

标签: git github subdirectory

在我的计算机中,我有一个文件夹nextdoor,其中有一个子文件夹source。我的所有图像和代码都存在于source文件夹中,但不知怎的,我无法将此特定子文件夹推送到远程存储库。

远程存储库:LINK

如果您转到远程仓库,则可以看到未添加source文件夹。子文件夹也不是空的。我已经尝试了很多方法但不幸的是,我无法推动这个特定的子文件夹。

如果我git status

git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

总子文件夹:

bin  include  lib  local  pip-selfcheck.json  README.md  source  static_cdn

因为我能够推送所有文件夹,但为什么source没有上升?

source文件夹中:

crytography  manage.py  registration.txt  templates
db.sqlite3   nextdoor   static

.gitignore文件:

# global gitignore for IDE, etc
# -- should still exclude project specific ignores in .gitignore

# system junk
.netrwhist
.Trash-1000
*.pyc
npm-debug.log

# IDEs
.idea
.env

# private files
id_rsa
*.key

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

您的上次提交(815bb7d)已损坏。它增加了半个子模块"。

使用git submodule add添加子模块时会发生两件事:创建一个文件.gitmodules,其中包含子模块的URL和一个"文件夹"已创建,使用子模块的提交进行注释。

在您的情况下,您设法创建一个包含第二个但不是第一个的提交:

$ git ls-tree 815bb7d28719ab66e765ba8e265eb317766b68db
100644 blob 506c8957ac440449d375416f45c6753a3cb65d83    .gitignore
100644 blob 5f8188352aa817edb6808536f598d3ac74d448d7    README.md
040000 tree c336cc94ab9a686360ee9e6f330558cdee571e9d    bin
040000 tree 334b6ff5f7c516042b7a185ec6106208df8495a7    include
040000 tree e65f051d2d0e9f2648a6b83f0ef0836893423ee5    lib
040000 tree 63a79abf5f366fc25b0b47fc527ea237163a0505    local
100644 blob 2dbf660a900d007e70510ff0ccc2c553b32d6120    pip-selfcheck.json
160000 commit 4732e130e321cacd355f8bffbf1c1726e94576c6  source
040000 tree 12edc4bcf6f3ab7a76dc5bda57a940c0caeae7e0    static_cdn

您可以看到,提交的对象已存储,但相应的.gitmodules文件不存在。

您至少有两个选项要么丢弃已损坏的提交(git reset --hard 815bb7d28719ab66e765ba8e265eb317766b68db^),要么通过删除评论中建议的.git目录来完全丢弃整个历史记录。

请注意,可能会推送目录。您始终在本地存储库中执行本地提交,然后通过推送本地提交将本地存储库与远程存储库同步。

在您的情况下,您无法在" source"中添加文件。到您的存储库,因为" source"被认为是一个单独的存储库,一个子模块。

答案 1 :(得分:-1)

这是最快的,但肯定不是最好的解决方案。你的git存储库似乎有些东西被打破了。我让它工作的最快方法是销毁你的git存储库并重新开始。 警告您将丢失历史记录:

rm -rf .git
git init
git add ...

我会更好地研究为什么 git存储库被破坏了;正如@michas

所建议的那样