问题描述
我有一个文件“ db-connection.PHP”,该文件对于每个服务器版本都必须不同。 (Localhost,Dev和Production)。起初我以为.gitignore
是答案,但是经过大量的痛苦和研究,我意识到Printing emails...
Traceback (most recent call last):
File "print_emails.py",line 53,in main
print_emails()
File "print_emails.py",line 43,in print_emails
primary_emails,primary_email_ids = get_emails_and_ids(primary_source_folder)
File "print_emails.py",line 29,in get_emails_and_ids
property_accessor = item.PropertyAccessor
File "C:\Program Files\python38\lib\site-packages\win32com\client\__init__.py",line 474,in __getattr__
return self._ApplyTypes_(*args)
File "C:\Program Files\python38\lib\site-packages\win32com\client\__init__.py",line 467,in _ApplyTypes_
self._oleobj_.InvokeTypes(dispid,wFlags,retType,argTypes,*args),pywintypes.com_error: (-2147352567,'Exception occurred.',(4096,'Microsoft Outlook','Out of memory or system resources. Close some windows or programs and try again.',None,-2147024882),None)
Press enter to exit...
仅适用于未跟踪的文件:例如文件不在存储库中。
出于明显的原因,我与 xampp 一起使用的localhost版本要求db文件位于存储库中。当然,这意味着每次我将其推送到Dev时,都会破坏Dev db连接。
有没有办法告诉.git“是的,我知道这个文件存在,但是无论如何都不要管它”?
解决方法
这是一个常见问题,有两种解决方案,具体取决于您的需求。
首先,如果您总是要拥有相同的配置文件,并且它们只会根据环境(而不是开发人员机器)而变化,那么只需在存储库中创建文件的三个版本(例如,在config
目录),然后使用脚本或手动将适当的目录复制到位。然后,您删除db-connection.php
文件并忽略它。
如果此文件实际上需要依赖于用户的系统(例如,它包含个人开发人员凭据或系统特定的路径),则应发送模板文件并使用脚本将其复制到位(可能会填写用户的相关详细信息)。在这种情况下,db-connection.php
也将被忽略并从存储库中删除。
人们尝试做的两件事不起作用。其中之一是尝试保留多个分支,每个分支都有其自己的文件副本。这是行不通的,因为Git确实没有提供一种在分支之间不合并某些文件的方法。
人们尝试做的另一件事就是通过调用git update-index
忽略对跟踪文件的更改。这在各种情况下都会中断,因为不支持这样做,并且Git FAQ entry和git update-index
manual page解释了原因。
当您不希望git管理对该文件的更改时,可以将skip worktree
选项与git-update-index
一起使用。
git update-index --skip-worktree db-connection.php