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

DS-*_*att 5 git fork opencart git-flow

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

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

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

注意:我这样做是因为我希望我们的repo能够在没有任何1000次以前的Opencart项目提交的情况下开始清理.

2)我将为Github上的Opencart Project Repo设置一个额外的"上游"仓库,以便我们将来可以将对opencart项目的提交/修复/新功能/改进纳入我们的电子商务站点.

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

问题:

如果/当我们想要回馈Opencart项目时,由于我们不会在fork上工作,我还能提交pull请求吗?或者我是否需要在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代码所做的大部分修改都是专有的,我们不希望与Project共享.

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

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

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

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

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

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

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

use*_*710 0

我认为您还没有正确了解 git。

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

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

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

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

你应该从这里开始。