5

编辑 - 我已经进行了一些搜索,并相信我已经找到了大多数问题的答案,这是我的发现的摘要,请确认这是最好的方法:

我打算使用 Opencart 为我的公司开发一个电子商务系统。与两到三个其他开发人员一起工作(有时一起在办公室,有时在远程),我们将对 Opencart 源代码进行大量修改(以定制代码以满足我们公司的需求)。我打算:

  1. 从 Opencart 下载 Master 分支作为压缩包并将其安装在本地存储库中以用于开发目的。然后,我会将其推送到 Github 以作为备份和中央主存储库进行保管。此外,当我们合并/提交到主分支然后推送到 Github 的(原始)回购时,我们将使用部署挂钩将我们的代码部署到我们的服务器。

注意:我这样做是因为我希望我们的 repo 在没有 1000+ 之前对 Opencart 项目的任何提交的情况下开始干净。

  1. 我将设置一个额外的“上游”存储库以移植到 Github 上的 Opencart 项目存储库,以便我们将来可以将对 opencart 项目所做的提交/修复/新功能/改进合并到我们的电子商务站点中。

2a) 使用 Git fetch - 我将从上游 repo 中提取提交。由于功能改进(提交到 Opencart 存储库时可能不是 100% 完成)和错误修复/等提交到同一个主分支,我可以使用 Git 樱桃挑选功能选择哪些提交合并到我们的 E -Commerce 来源,然后忽略其他用于功能改进的提交(我们将在以后知道它们稳定时将其合并 - 通常与未来的版本一起发布)?

问题:

如果/当我们想回馈 Opencart 项目,因为我们不会在分叉上工作,我还能提交拉取请求吗?还是我需要在 Github 中建立一个分叉的 Repo,然后将更改放到我打算提交的那个 repo 上,然后提交一个 pull request?

这个过程是完成的最佳方式吗:

  1. 能够从我们项目的干净提交历史开始(我认为是的)
  2. 保持我们的代码专有,并最大程度地控制确保我们的一些专有修改不会意外发送到 Opencart 项目?
  3. 能够将“上游”提交合并到我们的代码中吗?3a) 选择在我们的代码中添加“上游”提交的时间/时间——因为 Opencart 项目上的一些提交在提交时还没有 100% 准备好迎接黄金时间?

非常感谢你的帮忙!

DS-马特


编辑帖子前的原始问题:

我是编程/VCS 新手,我开始使用 GitHub。

我将与其他两三个程序员一起开发一个电子商务网站。由于我对命令行不是很好,我将使用两个 GIT GUI 之一 - Sourcetree 或 GitTower。我想使用 Gitflow 方法来管理项目。电子商务网站将使用 Opencart 项目作为其基础,由我自己以及其他两名开发人员根据我们公司的需求进行修改。

我正在寻找有关如何正确管理我们的存储库以及与 Opencart 项目保持同步的建议。以下是我遇到的主要问题:

  1. 我应该将 Opencart 项目作为我们所有开发人员都将拉/推到的主要 Origin Repo 分叉吗?或者我们应该建立我们自己的不是 Opencart 项目分支的 Repo?

注意:我们对 Opencart 代码所做的大部分修改都是专有的,我们不想与项目共享。

  1. 我们所做的一些修改我们想回馈给 Opencart 项目(如果 Opencart 开发人员愿意接受我们的拉取请求),我们需要确保这些可以在默认的 Opencart 代码上工作(没有我们专有的修改) ,这会改变问题 1 的答案吗?

  2. 由于 Opencart 中的错误修复没有分解到不同的分支或合并到版本分支中,而是与新功能一起提交到主分支,有没有办法选择哪些提交合并到我的 Forked 存储库中的每个分支中我从上游回购中提取提交?

例子

Opencart Master分支(在我的仓库中设置的分支以跟随上游主分支。

DS Bugfixes分支(分支设置用于将 Opencart 中的错误修复合并到我们的项目中。

从 Opencart 主分支中提取所有提交时,我可以选择合并到 Opencart Master(用于错误修复和新功能)或合并到 DS 错误修复,这只是我需要进入我们的电子商务的修复代码而不将新功能提交。

  1. 最后,如何在 Sourcetree 或 GitTower 中执行这些行为?

如果我使用了错误的术语,我深表歉意,我对 Git 很陌生,并且已经尝试阅读教程,但仍然需要一些帮助!

4

1 回答 1

0

我认为您对 git 还没有正确的认识。

git是一个用于分布式控制版本控制的应用程序,分布式部分意味着你不需要一个集中的基础设施,如果你出于特殊原因需要 github 没关系,但你只需要你的电脑就可以与 x 人一起工作并且混帐。

在 git 中你并没有真正分叉,最接近分叉的是:

  • 从另一个分支的内容开始创建一个新分支
  • 重新定位分支的 HEAD
  • 拥有一个只是指向另一个分支的指针的分支

http://git-scm.com/book http://www.youtube.com/watch?v=ZDR433b0HJY

你应该从这里开始。

于 2013-06-17T17:24:44.167 回答