![](/img/trans.png)
[英]How do I change a feature branch of a local git repo without changing the master branch?
[英]Can I git ignore an entire branch to create a local branch that interfaces with live server, with debug set to True.?
我将要开始进行部署,我的实时服务器崩溃时遇到了一些问题,并且我无法将调试设置为True。
我已经知道如何进行设置,但我认为我需要一些帮助。
我有一个本地分支, master
和一个带有Django Debug=True
的本地数据库。
我将master
推送到服务器,那里有一个实时数据库,以及一个.env
文件,其中Debug
设置为False
。
现在,我已经设置了一个新的本地分支debug
具有Debug=True
,并且可以使用SSH隧道连接到实时数据库。
我要做的只是在Debug
设置为True
针对实时数据库运行我的代码。 因此,当服务器上发生故障时,只要.env
之外的debug
和master
有意义地相同,我就能够调试任何错误,而无需在面对Internet的实时实例上发生Debug=TRUE
的情况。
我想以各种方式让我的本地debug
分支成为master
的精确副本,但是它不是通过连接到我的本地数据库,而是通过SSH隧道并使用Debug = True
来连接到实时数据库。
我有一个名为.env
的.gitignore
文件,并且我正在运行python decouple
。
我的.env
文件在该.gitignore
文件中引用。
实时服务器有一个.env
,本地master
分支有一个。
现在,我需要第三个分支来进行debug
分支-但是Git不会跟踪它,因此当我切换分支时,它仍然指向我的单个.env
文件。
如果我跟踪它,它最终将在存储库中失效,从而失去了去耦的目的。
到目前为止,我已经将环境变量(数据库等)硬编码到我的debug
分支的settings.py
文件中。
但是我现在该如何前进?
除了settings.py
如何通过其他方式debug
与master
相同的master
? 我的.gitignore
不是特定于分支的吗?
而且,如何自动保持debug
与master
同步?
理想情况下,我将debug
同步到master
(除settings.py
),然后整个分支永远都不会提交到存储库?
是否有更好的解决方案?
是否有更好的解决方案?
是的,它涉及根据分支保留(对于给定文件,在此处env-dev.txt
) 不同的内容 ,这意味着:
env.tpl
env.dev
, env.master
:由于它们不同,因此合并或切换分支时没有合并问题。 为此,您可以在子模块存储库中注册(在.gitattributes
声明中 ) 内容过滤器驱动程序 。
(图片来自“ 自定义Git-Git属性 ”,来自“ Pro Git书 ”)
与模板文件( env.tpl
)关联的smudge
脚本将通过在正确的env.<branch>
值文件中查找值来生成(自动git checkout
)实际的env
文件。 像您当前所做的那样,生成的实际env
文件仍然被忽略( .gitignore
)。
请参阅“ 分支之间的git smudge /清洁过滤器 ”中的完整示例。
您的smudge
脚本可以使用以下命令确定已检出分支的名称:
branch=$(git rev-parse --symbolic --abbrev-ref HEAD)
如果您需要分支特定的内容,则同样的想法也适用于settings.py
。 `
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.