在git merge上维护一些更改
我对git机械学有点困惑 我的工作有三个分支在git merge上维护一些更改,git,github,merge,branch,git-merge,Git,Github,Merge,Branch,Git Merge,我对git机械学有点困惑 我的工作有三个分支masterdevel和public。我使用master将我的Node.js应用程序部署到OpenShift(或heroku)中devel是我开发功能的地方,我使用public在GitHub上推送我的开源代码 每次我必须在OpenShift上部署我的应用程序时,我只是从devel合并到master,然后推送。 git也是如此,我将从devel添加到public 问题是:示例。我有一个文件,index.html,里面有一段用于私有谷歌分析的代码。或者例如
master
devel
和public
。我使用master
将我的Node.js应用程序部署到OpenShift(或heroku)中devel
是我开发功能的地方,我使用public
在GitHub上推送我的开源代码
每次我必须在OpenShift上部署我的应用程序时,我只是从devel
合并到master
,然后推送。
git也是如此,我将从devel
添加到public
问题是:示例。我有一个文件,index.html
,里面有一段用于私有谷歌分析的代码。或者例如,我需要一些文件,以便在master
中部署,而不是在public
问题是:如何将这段代码和文件保存在master
中,而不保存在public
中
我考虑了两种(非工作)策略:
1) Snippet\文件不存在于devel
中,但存在于master
-->i mergedevel
中master
-->从master中删除Snippet\文件
以这种方式,我可以使用public
(因为不包括私有代码段\文件),但我不可以使用master
2) 如果我将devel
->合并到master
中,Snippet\files将出现在devel
中,我可以在OpenShift上部署,因为包含Snippet\files
但是在public
-->中合并devel
现在public
有了我的私人文件
Gitignore文件不能帮助我,因为它们在分支之间共享,如果我忽略我的私有文件,它们也将在我的master
deploy中被忽略。即使如此,这也不能解决代码片段的问题
TL.TR。如何合并2个分支,使某些文件\部分代码不合并?可能是用一种简单的方式,因为我必须对很多文件执行此操作
或者,我怎样才能改变我的分支策略来实现这一点呢?我发现了一个知道如何做到这一点的网站。您可以对不同的分支使用
excludesfile
以下是如何做到这一点:
$ git branch public_viewing
$ cd .git
$ touch info/exclude_from_public_viewing
$ echo "path/to/secret/file" > info/exclude_from_public_viewing
然后编辑.git/config文件并添加:
[core]
excludefile = +info/exclude
[branch "public_viewing"]
excludefile = +info/exclude_from_public_viewing
使用这种方法,所有的公共文件都在info/exclude\u中,不在公共视图中查看
,个人文件在info/exclude
中
您可以在此处找到该网站:您可以更改您的分支机构战略以实现这一目标。我假设你们所有的公共代码都应该出现在你们的主分支中 您可以有4个分支(而不是3个),例如
master、dev-master、public和devel
- 您应该在
分支上进行大部分开发(私人文件除外),并随时将其合并到devel
和dev master
。因为它没有任何私有文件,所以不会合并到public
branchpublic
- 当您想要编写您的私有代码时,只需在开始编写您的私有代码之前将分支从
切换到devel
,然后在此处测试您的功能。一切正常后,将dev master
合并到dev master
分支mater
我不确定这是否是最好的策略。我希望这对你有帮助 我很久以前在另一篇文章中发现了这种方法,但似乎不起作用(可能是版本问题,这篇文章的日期是2010年)。问题是,即使这项工作(无论如何都会很好)不能完全解决问题,因为我想更新index.html(而不是忽略它),只是让部分代码在合并时不受影响。但真的很感谢,谢谢:)你的分支机构战略非常好,我现在就转向你的建议!这实际上有助于更好地将代码库与生产部分分开。但我认为我找到了解决问题的方法,只是在使用git-rm和commit时犯了一个错误。我会在我的第一篇文章中更好地解释它(也许有人会有用)忘记了非常感谢你的建议,特别是我很高兴它帮助你决定了你的分公司战略。请将此答案标记为已接受:)我想我找到了解决方案。是git系统使用中的一个错误
devel
最初在部署master
时使用了seme code\文件。现在,为cleandevel
branch删除这些信息,master
中的mergin也会删除这些信息。解决方案(我知道这很愚蠢)是在master
中重写文件和有用的代码片段。到目前为止,即使这些信息不再出现在devel
中,即使从devel
合并,master也将继续拥有它们。我是git新手,我有点困惑:)我只是觉得代码片段\文件总是会随着合并而被删除!