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

标签 git opencart fork git-flow

编辑-我已经做了一些搜索,相信我已经找到了大多数问题的答案,以下是我的调查结果摘要,请确认这是最好的方法:
我计划用opencart为我的公司开发一个电子商务系统。与另外两到三个开发人员(有时在办公室,有时在远程)合作,我们将对opencart源代码进行大量修改(以定制代码以满足我们公司的需要)。我计划:
1)从opencart下载master分支作为zip,并将其安装在本地repo中以用于开发。然后我会将其推送到github,作为备份和中央主存储库进行安全保存。此外,当合并/提交到主分支,然后推送到github(源)repo时,我们将使用deployhook将代码部署到服务器。
注意:我这样做是因为我希望我们的repo能够在没有任何1000多个opencart项目之前的提交的情况下开始清理。
2)我将在github上设置一个附加的“上游”repo端口到opencart项目repo,这样我们就可以在将来将opencart项目的提交/修复/新特性/改进合并到我们的电子商务站点中。
2a)使用git fetch-我将从上游repo中提取提交。由于特性改进(提交到opencart repo时可能无法100%完成)和bug修复/etc提交到同一个主分支上,我是否可以使用git cherry pick功能来选择要合并到我们的电子商务源中的提交,然后忽略其他用于功能改进的提交(当我们知道它们是稳定的(通常是在将来的版本发布中)时,我们将在以后合并这些提交)?
问题:
如果/当我们想为opencart项目做出贡献时,因为我们不需要使用fork,我还能提交pull请求吗?或者我需要在github中建立一个分叉的repo,然后将更改放到我计划提交的repo上,然后提交一个pull请求?
此过程是否是实现以下目标的最佳方法:
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项目保持最新的建议。以下是我的主要问题:
我是否应该将opencart项目作为所有开发人员将要拉/推到的主要来源repo?或者我们应该建立自己的回购协议,而不是opencart项目的一个分支?
注意:我们对opencart代码所做的大多数修改都是私有的,我们不想与项目共享。
我们所做的一些修改我们希望返回给opencart项目(如果opencart开发人员愿意接受我们的pull请求),我们需要确保这些修改能够在默认的opencart代码上工作(没有我们的专有修改),这会改变问题1的答案吗?
由于opencart中的bug修复没有分解到不同的分支或合并到版本分支中,而是与新功能一起提交到主分支中,所以当我从上游repo中提取提交时,是否可以选择将哪个提交合并到分叉repo中的每个分支中?
例子
Opencart Master分行(在我的回购协议中设立的分行,跟随上游主分行。
DS Bugfixes分支(将opencart中的错误修复合并到我们的项目中的分支)。
当从opencart主分支中提取所有提交时,我可以选择合并到opencart主分支中(对于错误修复和新功能),或者合并到ds错误修复中,这将只是我需要进入我们的电子商务代码而不放入新功能提交的修复。
最后,如何在sourcetree或gittower中执行这些行为?
如果我使用了错误的术语,我很抱歉,我对git很陌生,我试过阅读教程,但仍然需要一些帮助!

最佳答案

我认为你对吉特的了解还不够。
git是一个用于分布式控制版本控制的应用程序,分布式部分意味着您不需要一个集中的基础设施,如果您由于特殊原因需要GitHub,这是可以的,但是您只需要您的PC就可以与X人员和Git一起工作。
在git中,你并不是真的用叉子,最接近叉子的是:
从另一个分支的内容开始创建新分支
重新定位分支的头部
有一个只不过是指向另一个分支的指针的分支
http://git-scm.com/book
http://www.youtube.com/watch?v=ZDR433b0HJY
你应该从这里开始。

关于git - 在GitHub上管理本地,远程和上游存储库的正确做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139425/

相关文章:

git - 为什么 checkin 名为 'commit' 的文件?

sorting - Opencart 按畅销产品排序

c - 没有。即使我不使用父进程,进程的数量也是指数级的

algorithm - 在线编译器如何处理 fork 炸弹

linux - Jenkins 无法运行 Maven

GIT 致命 : failed to read object

jquery - Megamenu,从顶部显示的子菜单

php - 非常高 'Waiting (TTFB)' 时间 - Opencart 3.0.2.0

c - fork : number of processes created

git - 同步两台电脑也用git