Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用单个Git存储库管理两个非常相似的网站?_Git_Version Control_Web_Branch_Git Branch - Fatal编程技术网

如何使用单个Git存储库管理两个非常相似的网站?

如何使用单个Git存储库管理两个非常相似的网站?,git,version-control,web,branch,git-branch,Git,Version Control,Web,Branch,Git Branch,我有一个网站,存在两个版本-语言版本。它们作为不同的网站运行在不同的服务器上,大多数仅在文本和一些配置图像等方面有所不同。但可以预期,它们在未来的功能上也会有所不同 由于这两个网站到目前为止都有确切的底层功能(但将来可能会有所不同),我希望能够 A) 同时对它们进行更改。 B) 仅对网站的第一个版本进行更改。 C) 仅对网站的第二个版本进行更改 现在,什么是实现这一目标的最佳方法?我选择了git分支——我有一个主分支,然后是分支a和分支B。如果我想对这两个网站进行更改,我在主分支上进行更改,然后

我有一个网站,存在两个版本-语言版本。它们作为不同的网站运行在不同的服务器上,大多数仅在文本和一些配置图像等方面有所不同。但可以预期,它们在未来的功能上也会有所不同

由于这两个网站到目前为止都有确切的底层功能(但将来可能会有所不同),我希望能够

A) 同时对它们进行更改。 B) 仅对网站的第一个版本进行更改。 C) 仅对网站的第二个版本进行更改

现在,什么是实现这一目标的最佳方法?我选择了git分支——我有一个主分支,然后是分支a和分支B。如果我想对这两个网站进行更改,我在主分支上进行更改,然后将主分支合并到a和B中。如果我想对a进行单独更改,我只在那里进行更改

到目前为止,我的工作流程是否正确?什么是更好的方法?我问这个问题是因为我做了一些错误的合并,撤销了一些提交,现在项目一团糟。必须有更好的解决方案。

您可以:

  • 将所有数据保存在一个分支中,并让.gitignore中包含的特殊配置文件决定它是哪个站点
  • 将公共代码保存在“主”存储库中,将不同的内容保存在将此repo作为子模块引用的其他两个存储库中
  • 将所有配置和内容移动到每个部署位置的特定数据库中
  • 继续你现在的工作

然而,我认为没有一个理想的选择。我对这种情况有一些个人经验,尽管它和你们的不同——我从事编译项目。我们有iPhone版本、iPad版本等,使用第一种方法。我们将所有代码保存在一个回购协议和一个分支中(我们使用分支,但用于其他需要)。我们有一个改变项目配置目标的特殊工具;但是,所有文件都保存在repo中,如果有人更改构建目标并提交所有更改,它会影响我们所有人。但是,由于更改构建大约需要20-40秒,这并不是一个不便。

您好,您能详细介绍一下子模块吗?在过去的15分钟里,我一直在用谷歌搜索这些东西,我能找到的所有示例都是用于第三方存储库的。对于我来说,分支的问题是它非常容易出错。@user1848605好吧,使用第三方库是子模块的主要目的。但是,如果您的代码以这样的方式编写,即代码的“公共”部分可以像第三方库一样处理,那么它可能非常适合您。