【问题标题】:Add repository to a git tree将存储库添加到 git 树
【发布时间】:2012-09-08 19:11:07
【问题描述】:

我有一个在线的 git 存储库,我和许多人一样使用它来跟踪我的程序。从我的目录树的根目录开始,它可以正常工作:

git add . 
git commit
git push origin master

有一天我发现我的树中的一个子目录变成了绿色(在 git 站点上)并且无法访问。现在我知道绿色用于子模块(即使我不明白这是什么意思),但我希望它是一个真正的目录,我可以在其中查看和下载那里的内容或检查修改。问题是,我怎样才能让这个目录再次变得正常,它的所有子目录和文件都在里面而不触及树内的其他目录?

谢谢

【问题讨论】:

    标签: git git-submodules


    【解决方案1】:

    我们的想法是:

    最后一个链接向您展示了如何取消引用子模块,同时,如果您愿意,可以保留在所述子模块中完成的提交的历史记录(但将它们合并回主仓库)

    现在,如果在尝试初始化子模块时,您会收到以下消息:

    No submodule mapping found in .gitmodules for path '...'
    

    检查“Git - how to track untracked content?”的第二部分:“Replace It with Plain Content”部分。

    根本原因是当您尝试在主 git repo 工作树中添加一个本身就是 git repo 的目录时:

    目录“nested repo”最初是一个独立的 Git 存储库。
    通常这样的子存储库会被忽略,但是如果你告诉 git add 显式添加它,那么它将创建一个指向子存储库的 HEAD 提交的 gitlink 条目,而不是添加目录的内容 .
    如果 git add 拒绝创建这样的“半子模块”可能会很好。

    【讨论】:

    • 概述的过程不起作用,可能是我正在做的一些错误。当我执行第 2 点时,我得到了这个。在 .gitmodules 中没有找到路径“python”的子模块映射和第 3 点的相同错误。因为我试图删除/修改的内容不存在
    • @LuigiTiburzi 查看我编辑的答案(这也解释了为什么你突然在 GitHub 存储库中看到一个绿色目录)
    • 问题是即使 git rm --cached 'path' 给了我错误,好像文件不存在一样。事实上,我在任何地方都没有任何 .gitsubmodules...
    • 这是我在尝试按照您编辑的答案的第一步致命时遇到的确切错误:pathspec 'python2.7/networking/' did not match any files
    • 请原谅我的打扰,现在我已经以某种方式完成了几乎要完成的工作,或者至少我希望如此,当我在消息中运行 git commit -a 时我只有一个问题我的更改处于未暂存提交的更改中,我该如何暂存它们? Git 添加不起作用...
    猜你喜欢
    • 2018-09-02
    • 1970-01-01
    • 2015-06-06
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多