在GitHub上管理本地,远程和上游存储库的正确做法是什么?

时间:2013-06-17 01:47:12

标签: git opencart fork git-flow

编辑 - 我已经做了一些搜索并相信我已经找到了大部分问题的答案,这里是我的调查结果摘要,请确认这是最好的方法:

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

1)从Opencart下载Master Branch作为zip并将其安装在本地Repo中以进行开发。然后,我将把它推送到Github,作为备份安全保存并作为中央主存储库。此外,当我们合并/提交到Master Branch然后推送到github(原始)Repo时,我们将使用deploy hooks将我们的代码部署到我们的服务器。

注意:我之所以这样做是因为我希望我们的回购开始干净,而不需要1000次以前的Opencart项目提交。

2)我将设置一个额外的"上游"回购到Github上的Opencart Project Repo的端口,因此我们可以在未来将对opencart项目的提交/修复/新功能/改进纳入我们的电子商务站点。

2a)使用Git fetch - 我将从Upstream repo中提取提交。由于功能改进(在提交到Opencart仓库时可能不是100%完成)和错误修复/等被提交到同一主分支,我可以使用Git cherry pick功能选择要合并到我们的E-中的提交商业来源,然后忽略其他用于功能改进的提交(我们将在以后知道它们稳定时加入 - 通常是未来的版本发布)?

问题:

如果/当我们想要回馈Opencart项目时,既然我们正在研究叉子,我还能提交拉取请求吗?或者我是否需要在Github中设置分叉回购,然后将更改放到我计划提交的回购中,然后提交拉取请求?

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

1)能够以我们项目的干净提交历史开始(我认为是这样的) 2)保持我们的代码专有并且能够最大程度地控制我们的一些专有修改是否意外地发送到Opencart项目? 3)能够合并上游'在它们发生的时候提交我们的代码? 3a)选择在哪个/何时添加'上游'提交到我们的代码中 - 因为Opencart项目的一些提交在提交时并非100%准备好迎接黄金时段?

非常感谢你的帮助!

DS-马特

我的新计划的来源:

http://goo.gl/K8CdQ

http://goo.gl/Aj2jG


编辑帖子之前的原始问题:

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

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

我正在寻找有关如何正确管理我们的回购以及跟上Opencart项目的建议。以下是我遇到的主要问题:

  1. 我应该将Opencart项目作为我们的主要Origin Repo,所有开发人员都会拉/推?或者我们应该设置自己的Repo,而不是Opencart项目的分支?

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

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

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

    示例

    Opencart Master分支机构(在我的回购中设立分支机构跟随上游主分支机构。

    DS Bugfixes分支(分支机构设置为将Opencart中的错误修复程序合并到我们的项目中。

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

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

  5. 我道歉如果我使用错误的条款,我对Git很新,并且尝试阅读教程但仍需要一些帮助!

1 个答案:

答案 0 :(得分:0)

我认为你还没有关于git的正确图片。

git是分布式控制版本控制的应用程序,分布式部分意味着您不需要集中式基础架构,如果您因特殊原因需要github就可以了,但是您不需要比你的电脑与x人和git一起工作。

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

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

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

你应该从这里开始。