使用Git进行4人项目协作

6
在我大学的一个项目中,我和其他3个开发者组成了一个小组,从零开始开发网页应用程序。我们对Git有一个基本的理解,并决定使用它进行代码库协作。我们已经设置好了仓库,每个人都是GitHub上的合作者。
在过去的几个月里,我们一直在克隆并提交/从主分支获取最新代码,这一直运作得不错。但近来,有时会有两个或多个人同时在代码库上工作,导致有些人落后于提交,必须在提交之前再次克隆仓库,这有时会导致他们的更改丢失。
今天,小组成员之一谈到了“开发”分支的概念,我们都将其克隆并提交,然后在每个迭代周期结束时将其合并到主分支中。虽然我们尝试了这种方法,但没有看到任何改进,因为我们仍然从同一个代码库中工作,所以还是出现了之前的问题。
另一个人提出了fork(这对我来说很新) 主仓库, 在其中进行工作,然后向主仓库发送pull request,然后可以将其合并。实践中,这听起来像是一个很好的计划,因为更改可以被审查,如果破坏了代码,可以进行修复。这是我对它的理解。
但正如我所说,我们都对Git很陌生,只有一个基本的掌握。作为一个由4个开发人员组成的小组,使用Git代码库的标准组织方式是什么?我已经查阅了一些Git文档,但对于那些只知道如何克隆并提交到主分支的人来说,这些文档还是很让人困惑的。
感谢您的任何帮助!

你写道“提交前克隆存储库,有时会导致他们的更改丢失”。为什么会有任何更改丢失?你确定你从主分支拉取了更改吗?如果是这样,你不应该丢失数据。在同一文件上的并行更改将由git自动合并。或者你只会得到一个冲突。 - harpun
我现在意识到我的想法是多么的愚蠢,但我以前理解的是当两个人在同一文件上工作并提交时,最后一个提交的人会覆盖之前提交的人所做的更改。虽然我们遇到了一些冲突错误,让我们有些烦恼。 - James Dawson
尝试使用http://try.github.com/levels/1/challenges/1和http://atlassian.com/git/tutorial/git-basics进行良好的git教程。对于初学者来说,使用[集中式工作流程](http://atlassian.com/git/workflows#!workflow-centralized)应该足够了。没有必要过度复杂化 :) - harpun
2个回答

3
你需要了解Git工作流程和/或分支模型。这方面有很多内容,以下是一个入门级别的链接:A successful git branching model
你需要考虑版本发布、预上线、生产等概念,因为这些可以很容易地表示出来。基本上,这都与组织有关。

1
这很像我们今天早些时候尝试的开发分支,只是更复杂,以支持像热修复和功能等分支。然而,对于我们的项目来说,我觉得这会太复杂了,虽然我会寻找更简单的模型。谢谢! - James Dawson

0
谈起开发方法论中的“标准”事物是很危险的,因为几乎不存在这样的事情。开发人员往往以适合自己的方式组织自己(或者按照管理层的要求组织)。
你提到的所有方法都是使用分布式版本控制系统的有效方式。我建议你没有从其他方法中看到巨大的好处,是因为你正在处理一个规模较小、位于同一地理位置、讲同一种语言、具有类似能力和类似明确目标的大学级项目。当这些条件不成立时,Git才会显示出其优势。
对于真正希望某个人作为项目的规范版本的门户的分布式项目,拉取请求非常适用。当你希望每个人都能够拥有相等的提交权限时,开发分支是一个好的解决方案。人们倾向于使用开发分支,以便他们可以始终保持一个可用的版本供他人使用。我猜你目前还没有用户,这就是为什么你可能不会从这种方法中获得太多好处的原因。
除非你彼此交流并决定团队中有某些事情不适用,否则我建议你继续现在的工作方式。如果出现这种情况,你们可以决定是否采用其他工作方式会更好。

好的,谢谢。我认为采用“守门人”方法可能是最好的,因为尽管我们都很能干,但我们的技能却在不同的领域(两个后端程序员、一个用户界面专家、项目管理等),所以我会更深入地探讨让用户分叉和拉取回购库的方法。 - James Dawson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接