我的应用程序托管在Heroku上,我也有一个公共github repo。
我的应用有一个包含我的亚马逊S3凭据的配置文件。确保文件被推送到heroku而不是github非常重要。
所以我想我可以将我的主分支推送到heroku并创建一个单独的github分支,并确保它的.gitignore文件引用我的s3.yml文件。然后我可以做“git push origin github:master”将github分支推送到github.com
这适用于第一次提交。
然后我切换到我的主分支,编写一些很棒的代码,然后将它全部推送到heroku。然后我切换回我的github分支并执行“git merge master”,以便将新代码添加到其中。但这会导致master分支中的s3.yml和gitignore文件被复制到github分支中。提示从头到脚敲打会议。
是否有任何关于如何保持分支同步,同时确保未跟踪文件保持未跟踪的建议。我可以告诉git不要合并不需要的S3.yml文件和不同的.gitignore文件吗?
我在这里鞭打死马吗?我无法证明支付私人github账户的合理性,但我想这个答案将涉及到这样做......或者转换为项目锁定
我希望这个问题仅仅取决于我的垃圾git技巧,并且有一种方法......提前感谢
编辑:::接受的答案是一个很好的解决方案,但我刚刚发现了一个我更喜欢的新解决方案。在这里阅读:http://docs.heroku.com/config-vars - Heroku的聪明人有一个答案......真是太棒了答案 0 :(得分:10)
但是这会导致master分支中的s3.yml和gitignore文件被复制到github分支
您可以使用自定义合并驱动程序来避免这种情况,这将确保github分支的.gitignore文件始终将其内容保留在与master合并的文件上。
请参阅How do I tell git to always select my local version for conflicted merges on a specific file?
答案 1 :(得分:2)
http://github.com/guides/ignore-for-git
希望有所帮助
答案 2 :(得分:1)
你可以将“危险”文件完全从git中移开 - 例如将它们放在〜/ .yourapp或类似的东西中。 (这并没有真正直接回答问题,而是它的大量软件 - .fetchmail,.ssh,...),并允许其他用户也这样做。
答案 3 :(得分:0)
如果您使用名为heroku的分支作为“替代主数据”分支(包含敏感数据)而使用没有敏感数据的旧主分支,那么您可以随时使用
git merge master
所以你可以将heroku分支推送到heroku而不是master分支。