【问题标题】:Git Submodules conflicting gitignoreGit 子模块与 gitignore 冲突
【发布时间】:2014-09-16 05:37:19
【问题描述】:

我有一个存储库,我忽略了整个目录,但是里面有一个单独的目录,我想成为一个子模块。所以我的 git ignore 文件有一行,

wp-content/plugins/

我正计划添加这条线

!wp-content/plugins/my-plugin

所以它只会跟踪子模块代码,对吗?

所以我尝试将其添加为子模块并收到“使用 -f 标志”消息。所以我做了。现在 git status 显示该插件,即使该目录仍然被忽略。

-f 是否强制它覆盖 git 忽略指令?如果是这样,我可以省略!就像在我的忽略文件中一样并全部提交?

谢谢。

【问题讨论】:

    标签: git git-submodules gitignore


    【解决方案1】:

    如果这在“Git ignore all except subfolder”之后没有改变,您的忽略规则将是:

    wp-content/plugins/*
    !wp-content/plugins/my-plugin
    

    请注意,我不会对my-plugin 使用尾部斜杠(如您所做的那样),因为添加子模块会在索引中添加一个gitlink entry,称为my-plugin

    【讨论】:

    • 哦,那么忽略整个目录在末尾添加*的正确方法是什么?
    【解决方案2】:

    您混淆了忽略文件夹和子模块,但它们实际上是两个不同的东西。如果您希望该插件作为子模块存在于您的存储库中,则不应在那里忽略它(因为子模块是您存储库中设计的不同实体)。

    您需要从这里解决这种情况,暂时将my-plugin 文件夹完全移出存储库。然后从您的 .gitignore 文件中删除 !wp-content/plugins/my-plugin 行,因为它不再需要并提交您的存储库的该状态。

    现在确保您的 my-plugin 位于单独的存储库中(这是作为子模块添加的要求)并将该子模块添加到您的主存储库中。这应该可以解决问题。

    【讨论】:

    • 好的,那么他们以两种不同的方式完成了吗?通过添加一个子模块,它“否决”了整个目录的 gitignore?所以我不需要明确允许吗?另外,请注意,我从未添加 !wp-content/plugins/my-plugin 行,我只是说这就是我要做的......
    • 完全不同。用你的话来解释,是的,它会“推翻” gitignore 中的规则,但子模块中的文件实际上并没有被父存储库跟踪。
    猜你喜欢
    • 2014-07-31
    • 2010-10-24
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    相关资源
    最近更新 更多