从推拉中排除文件

exclude files from pushing and pulling

我有一个远程存储库,它被镜像到一个开发站点并下载到我的本地机器上使用。当我推送更改时,他们会通过挂钩更新网站。

更新 我需要的东西: 存储库包含整个项目,开发站点的工作 "configuraion.php"(用于测试的工作在线资源); 任何开发人员都可以拉取项目并将 configuration.php 中仅有的两个路径变量更改为 运行 ; 之后这个文件不应该提交到存储库,并且在拉取更改时不应该被覆盖。

但是我从存储库中提取错误。 我试过:

但是当我尝试从存储库中提取更改(由其他人所做的)时,我得到以下信息:

error: Your local changes to the following files would be overwritten by merge:
    configuration.php
Please, commit your changes or stash them before you can merge.
Aborting

尝试添加到 ".git/info/exclude" 但没有明显效果。

我做错了什么?

难不成文件configuration.php还在被其他人跟踪?如果是这样,那么您的远程存储库将包含此文件,当您执行 git pull Git 时,将尝试将此文件放入本地存储库。尽管您已取消跟踪该文件,Git 似乎正试图从远程导入它。

更新:

在 Git 的模型中忽略远程文件没有意义。因此,如果您坚持维护远程存储库中的configuration.php文件,那么您不应在本地设置中使用该文件。一个简单的解决方法是保留一个不同的本地 PHP 配置文件(例如 configurationLocal.php)和 运行 用于本地测试。

所以你的工作流程可能是这样的:

  1. git pull 将获取最新的 configuration.php 文件
  2. 复制configuration.phpconfigurationLocal.php
  3. configurationLocal.php 添加到您的 .gitignore 文件,这样它就永远不会被跟踪
  4. 使用 configurationLocal.php 进行所有单元测试等

在对 git pull 的后续调用中, 可能 configuration.php 发生冲突,但这无关紧要。如果发生冲突,您可以简单地接受服务器的版本,然后根据需要更新您的 configurationLocal.php 脚本。

项目需要配置文件是很常见的。但是提供一个示例文件也很常见,该文件为标准配置提供了很好的信息。

您可以将此文件命名为 configuration.php.sample,并将此文件复制到 configuration.php 并更改文件中需要更改的信息。

如果可以读入信息来补充这些信息,那么也许指令创建一个'local_config.php`。

在任何一种情况下,配置文件都不会在存储库中被跟踪,但样本会。这允许更新信息,而根本不会跟踪本地更改的文件。

否则,如果您对不想被推送的文件进行了更改,则可以隐藏您的更改(这是一个很好的论据,不使用 git add . 并负责指示您希望每次添加的文件)做您的存储库更改,以及您的推送和拉取,然后执行 git stash pop 以恢复您的特定本地更改。

来自 git 的有用消息甚至建议您将其藏起来。它可能就像这样做一样简单,如果您想要的是您独有的,而不是您项目中的所有开发人员,那么就可以得到您想要的东西。