为什么不忽略 public 目录中的文件?

Why file in public directory are not ignored?

在我的 Laravel 5 项目的根目录中有一个文件 .gitignore,它有规则:

/node_modules

/public/client_secret.json
/public/.htaccess

但是运行

git add . 

command 我看到上面的 2 个文件在 git 修改中,但我预计它们会被忽略。 建议url有很多选项,我不确定哪个对我有效。

哪种方式正确?

.gitignore 仅忽略未跟踪的文件。

由于这些文件显示为 modified(不是 new),这意味着它们已经被跟踪,因此您不能忽略他们。

有些人会告诉你使用索引标志的技巧;这不是它们的使用方式,以这种方式使用它们可能会导致其他问题。

如果文件不应该在存储库中,您可以将它们从索引中删除并提交删除。这可能有点冒险,因为 git 会认为从旧提交移动到当前提交时应该做的部分工作是从工作文件夹中删除文件。您可以通过编辑历史记录使文件看起来从未签入来避免这种情况,但这需要与您的团队协调历史记录重写。 (您最有可能使用 filter-branch;如果您需要更多信息,可以在 SO 中搜索彻底记录此过程的现有问答。)

如果文件本来就在那里,而您只是不想记录它们的更改(因为它们包含本地更改),那么我会做什么取决于项目的构建工具。通常我会设置一些东西,这样我就不需要将修改后的文件存储在工作树中(或者至少不需要存储在 filles 的签入副本中)。我将再次搜索详细涵盖该主题的现有问答。

  1. 保存要从 git
  2. 中排除的本地和服务器文件
  3. 运行 在您的本地(在您的应用程序的根目录中):

    git rm --cached public/.htaccess
    git rm --cached public/client_secret.json
    
  4. 推送后这些文件会被删除,恢复它们 手动

  5. 这些文件将从 git
  6. 中排除