【问题标题】:Git ignore deleted filesGit忽略删除的文件
【发布时间】:2011-02-12 16:28:25
【问题描述】:

我有一个网站项目,在某些目录中有超过 50,000 个不重要的文件(用于开发)。

/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 服务器上执行拉取操作时它不会删除它们。

有什么想法吗?

【问题讨论】:

    标签: git web ignore delete-file


    【解决方案1】:

    好的,我找到了解决方案。只需在子目录中创建一个新的 repo,父 repo 就会忽略它们。

    【讨论】:

    • 这会起作用,但最终在多个项目中拥有一堆分支/存储库并不理想。随着您的项目列表越来越大,前进可能会变得很痛苦。我确实建议您更加熟悉.gitignore 和索引管理工具。我上面的答案中有一个不错的教程。尝试一次真的很简单...
    • @MaurerPower,虽然我很欣赏您的描述性回答,但git rm --cached 不符合我的要求。例如,如果我使用该命令,则提交并推送。当我拉到另一台服务器时,它仍然会从该服务器中删除文件,即使它没有从原始服务器中删除它们。我做了一个小测试,这是我的结果:pastebin.com/5X0t1KGs
    【解决方案2】:

    创建子存储库是一种解决方案,但您应该将该子存储库设为 submodule。

    这样:

    • 您在正常内容和“文件”内容之间保持链接
    • 如果“文件”内容在某一天发生了演变,您可以在主仓库中注册其演变
    • 您可以在没有“git submodule update”的情况下签出您的主仓库(即不填写“files”内容
    • 在部署时,git submodule init 之后的 git submodule update 将足以返回正确版本的“files”内容。

    【讨论】:

      【解决方案3】:

      下面的代码适用于删除和修改的文件,以便在您执行 git status 时忽略它。

       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 commit -am”时,上面对已删除文件的建议包括已删除的文件!

      对我有用的解决方案是不删除文件,而是将其内容留空。这是我用来静音 .htaccess 文件的方法。

      【讨论】:

        【解决方案4】:

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

        for i in `git status | grep deleted | awk '{print $3}'`; do git update-index --assume-unchanged $i; done
        

        【讨论】:

        • 我需要将 $3 更改为 $2 git 版本 2.3.2
        猜你喜欢
        • 2016-05-02
        • 2015-11-30
        • 2012-07-05
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多