【问题标题】:Delete settings file from GitHub repo without deleting it from every remote clone从 GitHub 存储库中删除设置文件,而不从每个远程克隆中删除它
【发布时间】:2019-09-14 08:00:25
【问题描述】:

我继承了一个通过 GitHub 更新和分发的 PHP 天气模板网站。以前的所有者在开始时没有制作足够的 .gitignore 文件,因此 git 跟踪的许多文件不应该。这些文件包括使用用户数据更新的 .csv 数据库、json 数据文件和 settings.php 文件。在将文件列表添加到 .gitignore 之后,我现在的问题是让 git 在用户正在使用的所有远程克隆上不跟踪这些文件的最佳方法。我的第一个想法是只做一个git rm --cached <files>,但是这会从每个人那里删除文件,删除每个人的数据。

接下来我想警告人们备份文件,并在一周内发出git rm --cached 命令,但是对于未知但相当多的用户,我不能保证每个人都会在为时已晚,而且肯定有些用户会在不看论坛的情况下进行git pull

出于与上述相同的原因,让每个用户问题git rm --cached 可能也不起作用。

最终,有什么方法可以让 git 停止在模板的每个远程副本上跟踪这些文件,而无需依赖任何用户交互。一个简单的 delete-from-GitHub-but-not-from-outstanding-copies 命令会很棒。

【问题讨论】:

    标签: php git github


    【解决方案1】:

    没有办法做你想做的事。 Github 不是文件托管,它是 git 存储库托管,它显示了您的存储库的内容。要从 Github 中删除文件,您必须从存储库中删除文件(按此顺序不需要:您可以使用 Web 界面直接从 Github 中删除文件,但随后您必须拉取更改,并且文件将在您的本地仓库中删除) .没办法,抱歉。

    【讨论】:

    • 我认为这是一个远射,只是试图使用我得到的东西。任何体面的方式来分发正在积极开发的网站模板,用户可以通过简单的操作来更新,例如git pull,因此它不会尝试在每次更新时覆盖设置和数据文件?
    【解决方案2】:

    如果我正确理解您的问题,您希望从存储库中删除 .csv 文件,但当其他人执行 git pull 时,他们自己的 .csv 文件不受影响。

    快速提示:为了安全起见,请在单独的分支或试运行中执行此操作。

    1) 取消跟踪所有文件git rm -r --cached .

    2) 更新 .gitignore 文件以包含所有这些文件。

    3) 将所有文件添加回git add .(这将不包括 .gitignored 文件)

    4) 提交/推送

    【讨论】:

    • 不。这样做与使用git rm -r --cached <files> 并列出每个文件相同。结果是.gitignore 中的文件在远程克隆上被删除。如果用户事先执行了git stash,他们仍然必须执行git rm -r --cached <files> 才能使 git 恢复到干净状态。
    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2014-11-19
    • 2020-10-31
    • 1970-01-01
    • 2011-12-25
    • 2011-07-30
    相关资源
    最近更新 更多