Git Config 仅针对一个分支排除文件
Posted
技术标签:
【中文标题】Git Config 仅针对一个分支排除文件【英文标题】:Git Config excludesfile for just a branch 【发布时间】:2011-10-03 02:43:38 【问题描述】:我想在我的公共分支中排除一个名为 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
#
如果这不可能,是否有更好的方法来处理您不想在开放的 Github 项目中退出而不运行两个 git 存储库并在它们之间手动合并的数据库配置?
【问题讨论】:
【参考方案1】:对于配置文件,最好处理内容过滤驱动程序,而不是尝试忽略某些分支的文件。
你会:
存储配置文件模板 存储公共值 让内容过滤器“smudge
”脚本根据模板和公共值构建目标配置文件,
...除非该脚本检测到它位于部署环境中,在这种情况下,它将使用该服务器上其他来源的值(而不是存储在存储库中的公共值)
请参阅插图:
“Different databases for specific branches of git project”或 “When a commit to revision control requires a developer to change their own config”【讨论】:
好的,我想我在 .gitattributes 中得到了这样的东西? config/dbconfig.json 合并=我们的 @JTWebMan:合并驱动程序也可以工作,但我对过滤器驱动程序的观点是使用来自存储库外部的值。 在我的机器上这样吗?我想我明白你在说什么,所以当我提交更改时,它会查看哪个分支并替换我在本地拥有的文件中的值,该文件不在仓库中。它也适用于合并吗? @JTWebMan:它将在结帐时替换(涂抹脚本),而不是提交。并创建一个私有文件(即不存储在 repo 中),所以不关心合并。这个想法是将敏感数据保留在回购(及其历史)之外。以上是关于Git Config 仅针对一个分支排除文件的主要内容,如果未能解决你的问题,请参考以下文章