代码之家  ›  专栏  ›  技术社区  ›  Petah

Git忽略删除的文件

  •  13
  • Petah  · 技术社区  · 14 年前

    我有一个网站项目,在一些目录中有超过50000个不重要的文件(到开发)。

    /website.com/files/1.txt
    /website.com/files/2.txt
    /website.com/files/3.txt
    /website.com/files/etc.txt
    

    /files中的内容已经在repo中。我想删除本地副本/files中的所有文件,但我希望Git忽略它,这样当我在Web服务器上执行拉操作时,它就不会删除这些文件。

    有什么想法吗?

    4 回复  |  直到 9 年前
        1
  •  10
  •   dave1010    12 年前

    忽略整个目录不起作用。我必须这样做:

    for i in `git status | grep deleted | awk '{print $3}'`; do git update-index --assume-unchanged $i; done
    
        2
  •  6
  •   Community CDub    7 年前

    下面的代码适用于已删除和已修改的文件,以便在执行 GIT状态 .

     git update-index --assume-unchanged dir-im-removing/
    

    或特定文件

    git update-index --assume-unchanged config/database.yml
    

    Ignore modified (but not committed) files in git?

    注意:当您执行以下操作时,上面对已删除文件的建议是“ GIT提交-AM “包括已删除的文件!

    对于我来说,一个可行的解决方案是不删除文件,而是将其内容设为空白。这是我用来使.htaccess文件静音的。

        3
  •  2
  •   Community CDub    7 年前

    创建子回购是一种解决方案,但您应该使该子回购成为 submodule .

    这样:

    • 在你的正常内容和“文件”内容之间保持链接
    • 如果“文件”内容发展到某一天,您可以在主repo中注册其发展。
    • 您可以在没有“的情况下结帐主回购” git submodule update “(也就是说,没有填写' files 内容
    • 部署时,A Git子模块更新 git submodule init 将足以恢复“的正确版本” 文件夹 内容。
        4
  •  1
  •   Petah    14 年前

    好的,我找到了解决办法。只需在子目录中创建一个新的回购,父回购将忽略它们。