我有一个远程存储库,它被镜像到开发站点并下载到我的本地计算机上工作。当我推送更改时,他们会通过挂钩更新网站。
更新 我需要的东西: 存储库为开发站点提供工作“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"
但没有明显效果。
我做错了什么?
答案 0 :(得分:3)
可能是其他人仍在跟踪文件configuration.php
的情况吗?如果是这样,那么您的远程存储库将包含此文件,当您去做git pull
时,Git会尝试将此文件带入您的本地存储库。尽管你已经没有跟踪文件,但Git似乎试图从遥控器中取出它。
<强>更新强>
在Git的模型中 没有意义可以忽略远程文件。因此,如果您坚持维护远程存储库中的configuration.php
文件,那么您不应该在本地设置中使用此文件。一个简单的解决方法是保留不同的本地PHP配置文件(例如configurationLocal.php
)并运行该文件以进行本地测试。
所以你的工作流程可能是这样的:
git pull
将获取最新的configuration.php
文件configuration.php
复制到configurationLocal.php
configurationLocal.php
添加到您的.gitignore
文件中,以便永远不会被跟踪configurationLocal.php
进行所有单元测试等。在后续调用git pull
期间,可能与configuration.php
发生冲突,但这无关紧要。如果发生冲突,您只需接受服务器的版本,然后根据需要更新configurationLocal.php
脚本。
答案 1 :(得分:0)
配置文件对于项目来说是非常常见的。但是提供一个样本文件也很常见,它为标准配置提供了很好的信息。
您可以将此文件命名为configuration.php.sample
,并指示将此文件复制到configuration.php
,并更改文件中需要更改的信息。
如果可以读入信息来补充这些信息,那么也许可以指示创建一个&#39; local_config.php`。
在任何一种情况下,配置文件都不会在存储库中被跟踪,但样本会这样做。这允许更新信息,而不会跟踪本地更改的文件。
否则,如果你对一个你不想被推高的文件进行更改,你可以隐藏你的更改(这是一个很好的论据,因为从不使用git add .
并负责指示您希望每次都添加的文件)执行存储库更改,推送和拉取,然后执行git stash pop
以获取特定的本地更改。
来自git的有用信息甚至暗示你要藏匿。它可能就像这样做一样简单,如果您的需求是您独有的,那么就可以获得您想要的东西,而不是项目中的所有开发人员。