我对git机制有点困惑。
我的作品有3个分支master
devel
和public
。我使用master
将我的Node.js应用程序部署到OpenShift(或heroku)中; devel
是我开发我的功能的地方,我使用public
在GitHub上推送我的开源代码。
每次我必须在OpenShift上部署我的应用程序时,我只需从devel
合并到master
然后再推送。
同样适用于git,我从devel
到public
问题:示例。我有一个文件,index.html
在巫婆中有一段代码用于私人Google分析。或者前。我需要一些文件在master
中部署,但不能在public
问题:如何在master
中保留这段代码和文件,而不是public
?
我想到了2个(非工作)策略:
1)代码段\文件不在devel
中,但存在于master
- >我合并devel
中的master
- >片段\文件将从主
通过这种方式我可以使用public
(因为不包含私人代码段\文件)但我对master
不适用
2)Snippet \ files存在于devel
- >如果我将devel
合并到master
我在OpenShift上的部署很好,因为包含了片段\文件。
但在devel
合并public
- >现在public
有我的私人档案。
Gitignore文件无法帮助我,因为在分支机构之间共享,如果我忽略了我的私人文件,它们也会在我的master
部署中被忽略。即使如此,这也无法解决代码片段问题。
TL.TR 即可。如何合并2个分支保持一些文件\部分代码未合并?可能是以一种简单的方式,因为我必须为很多文件执行此操作。
或者,我怎样才能改变我的分支策略来实现这个目标?
答案 0 :(得分:1)
我找到了一个知道如何做到这一点的网站。您可以将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_from_public_viewing
中,而个人在info/exclude
中。
可在此处找到该网站:http://cogniton-mind.tumblr.com/post/1423976659/howto-gitignore-for-different-branches
答案 1 :(得分:1)
您可以更改分支策略以实现此目的。我假设所有公共代码也应该存在于您的主分支中。
你可以有4个分支(而不是3个),例如。 master, dev-master, public and devel
devel
分支上执行大部分开发(私有文件除外),并在需要时将其合并到dev-master
和public
。由于它没有任何私有文件,因此不会合并到public
分支。devel
切换到dev-master
,然后再开始编写私有代码,然后在此处测试您的功能。一切正确后,将dev-master
合并到mater
分支。使用此策略,您还可以使用/不使用私有文件来测试代码,这有助于维护代码库。
我不确定这是否是最好的策略。我希望这可以帮助你!!!