我有一个用于本地开发的主分支和一个用于部署到heroku的heroku分支。我有一个我忽略的conf文件,并且没有检查master,因为它是私有的,但是在heroku分支中它没有被忽略,并且它被添加到repo中,因为heroku服务器需要它才能工作。
问题:我注意到当我从master到heroku进行git checkout时,它从master中删除了我的conf文件。 heroku conf文件必须只是自动覆盖master上的同一个文件,因为该文件被忽略,git没有警告我,我有未提交的更改,我做了...丢了......
如何防止此类事件发生?有没有办法得到关于它的警告,或者我应该调整我管理事物的方式。
答案 0 :(得分:2)
如果您愿意调整管理方式,我建议您为所有私人配置设置环境变量。 Heroku支持它们,它们极大地简化了开源项目的部署和存储库设置(参见http://devcenter.heroku.com/articles/config-vars)。
答案 1 :(得分:1)
如果您愿意稍微改变一下您的工作流程,听起来您应该在本地检查该配置文件。我有类似的需求,我做了类似的事情:
Workflow:
Master -> Work -> Heroku
在这种情况下,您可以将配置文件与任何其他私有文件一起检查到Work
。要提交,您需要转移到master和用户cherry-pick
处理所有非私有提交。我使用了所有不以NOCOMMIT:
开头的提交,并将其构建到我调用的pull-work.sh
通过这种方式,您不会破坏DVCS
的模型,其配置文件可能与远程存储库分开进行版本化。
这是pull-work.sh
。这是由另一个SO用户在我的一个类似但尽管不同的问题上开发的。
#!/bin/sh
BRANCH=`git branch | grep ^\\* | cut -d' ' -f2`
if [ $BRANCH != "master" ]; then
echo "$0: Current branch is not master"
exit 1
fi
git log --pretty=oneline work...master | grep -v -E '(NOCOMMIT|DEBUG):' | cut -d' ' -f1 | tac | xargs -l git cherry-pick