Git Config只为一个分支排除了文件

时间:2011-10-03 02:43:38

标签: git github

我想在我的公共分支中排除一个名为config / dbconfig.js的文件,我用它来推送到github,但仍然能够从master推送到我的noester.com git repo以推向生产。我将配置文件更改为:

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  excludesfile = +info/exclude
[remote "nodester"]
    url = *** My Git Repo ***
    fetch = +refs/heads/*:refs/remotes/nodester/*
[branch "public"]
  excludesfile = +info/exclude_public

我确保删除了.gitignore文件,我正在使用.git / info / exclude文件进行常规排除,并希望使用.git / info / exclude_public来排除那个文件,这样当我合并时公开该文件不合并以及不推送到github。

如果我执行以下操作,即使在公共分支中,它仍会将文件添加到git。所以我在想以太,我的语法错了,或者说不可能。

$ git checkout public
$ git add .
$ git status
# On branch public
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   config/dbconfig.json
#

如果这是不可能的,有没有更好的方法来处理数据库配置你不想在没有运行两个git存储库并在它们之间手动合并的情况下退出开放的Github项目?

1 个答案:

答案 0 :(得分:2)

对于配置文件,最好处理内容过滤器驱动程序,而不是尝试忽略某些分支的文件。

content filters

你会:

  • 存储配置文件模板
  • 存储公共值
  • 让内容过滤器“smudge”脚本从模板和公共值中构建目标配置文件,
    ...除非该脚本检测到它位于部署环境中,在这种情况下,它将使用该服务器上其他源的值(而不是存储在repo中的公共值)

参见图示: