有没有办法设置远程特定的.gitignores?

时间:2010-03-16 17:12:50

标签: git github heroku gitignore

是否有一种简单的方法可以为不同的遥控器设置不同的.gitignore文件?我有一个存储库,我向Heroku和Github推送。我需要Heroku的database.yml,但不希望将某些信息推送到Github。所以我需要为每个遥控器使用不同的.gitignore文件。

我尝试过两个独立的分支,一个忽略database.yml,另一个不忽略。问题是,当我签出heroku分支并返回我的github分支时,整个database.yml文件都消失了。

任何提示?

3 个答案:

答案 0 :(得分:10)

不要将数据库信息放在database.yml中。相反,请使用Heroku环境变量。

答案 1 :(得分:5)

我对Heroku的要求一无所知 - 希望Justice是对的,你可以简单地避免这个问题。如果你不能,或者如果其他人发现这个不能......

如果您希望两个遥控器成为镜像(具有相同的提交),则根据定义,它们必须在这些提交中具有相同的文件。因此,您有两个选择:在所有存储库中都有file-for-repo-B,即使他们不需要它,也可以使用带有两个分支的稍微混乱的工作流:masterfor-repo-B。两个分支之间的唯一区别是提交file-for-repo-B;分支for-repo-B总是从master合并(但从来没有相反!)。现在你只需要在回购B中检查一个不同的分支,一切都很好。

答案 2 :(得分:1)

你应该版本化a:

  • database.yml只包含变量,
  • 一个脚本,可以使用正确的值替换这些变量,具体取决于部署database.yml的远程服务器。

然后您将脚本用作 smudge attribute filter driver

smudge content filter

每次在远程服务器上签出(并创建工作树)时,脚本都会执行并相应地更改变量,从而为您提供自定义database.yml文件。
如果其中一个遥控器不需要database.yml文件,它仍然可以存在,但是由涂抹脚本清空。