排除文件推拉

时间:2015-05-14 02:04:29

标签: git gitignore

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

更新 我需要的东西: 存储库为开发站点提供工作“configuraion.php”的整个项目(在线资源进行测试); 任何开发人员都可以拉动项目并更改configuration.php中唯一的两个路径变量来运行它; 之后,不应将此文件提交到存储库,并且在提取更改时不应覆盖该文件。

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

  • 下载项目
  • git update-index --assume-unchanged 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"但没有明显效果。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

可能是其他人仍在跟踪文件configuration.php的情况吗?如果是这样,那么您的远程存储库将包含此文件,当您去做git pull时,Git会尝试将此文件带入您的本地存储库。尽管你已经没有跟踪文件,但Git似乎试图从遥控器中取出它。

<强>更新

在Git的模型中

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

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

  1. git pull将获取最新的configuration.php文件
  2. configuration.php复制到configurationLocal.php
  3. configurationLocal.php添加到您的.gitignore文件中,以便永远不会被跟踪
  4. 使用configurationLocal.php进行所有单元测试等。
  5. 在后续调用git pull期间,可能configuration.php发生冲突,但这无关紧要。如果发生冲突,您只需接受服务器的版本,然后根据需要更新configurationLocal.php脚本。

答案 1 :(得分:0)

配置文件对于项目来说是非常常见的。但是提供一个样本文件也很常见,它为标准配置提供了很好的信息。

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

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

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

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

来自git的有用信息甚至暗示你要藏匿。它可能就像这样做一样简单,如果您的需求是您独有的,那么就可以获得您想要的东西,而不是项目中的所有开发人员。

相关问题