使用GIT管理多个项目人员


32

我是GIT / GitHub的新手(从昨天开始新手)。我想知道用Github管理同一项目中的多个人的最佳方法是什么。目前,我正在与四个开发人员一起管理一个项目。

  1. 我该如何进行工作流程并确保一切都同步?

    (注意:所有开发人员都将拥有一个通用帐户。)

  2. 每个开发人员都需要位于不同的分支吗?

  3. 我将能够处理2个使用同一文件的人吗?

请发表详细的答案,我不是一个害羞的读者。我需要很好地理解这一点。


7
一个帐户供所有开发人员使用?那可能行得通,但很可能不是个好主意。
marstato '16


可能值得研究基于GitFlow基于Trunk的开发。我个人已经与后者巨大的成功
Ĵ刘易斯

Answers:


29

如果所有开发人员都可以访问该存储库,则无需执行任何特殊操作。他们将从存储库中提取更改,进行自己的更改,在本地提交,然后在工作正常时将其推回到公共存储库中。

另一方面,如果您有一个(或几个)开发人员负责提交回购协议,而其他开发人员则为这些提供补丁。让他们每个人都将存储库克隆到自己的帐户中,并让他们在需要将更改存入主存储库时发送拉取请求。

如果需要,还可以制作特定的克隆以使用特定的功能。功能完成后,将相同的工作流程与拉取请求配合使用以将更改添加到主存储库中。

如果用“所有开发人员将拥有一个通用帐户”来表示所有开发人员将共享一个GitHub帐户并在存储库中显示为同一提交者,那是个坏主意。如果您希望所有人都具有提交访问权限,请分别创建一个帐户并将其设置为协作者。

至于您的具体问题:

  1. 不,使用分支进行功能,修复等将需要多次提交。一个分支上可以有多个开发人员。

  2. 是的,git能够很好地处理冲突,因此让人们在同一个文件上工作不会有任何问题。毫无疑问,如果对一个以上的成员进行了编辑的文件进行了根本性更改,则解决冲突可能并不总是那么简单。但是,这不是通过共同交谈无法克服的。版本控制不会取代通讯。

祝好运!


您提出的几点确实令人大开眼界,让我一起思考了不同的方向,谢谢!
badZoke 2012年

希望它能为您服务。Git和DVCS需要一些习惯,但是一旦您习惯了它们,它们将非常灵活。
哈拉尔德2012年

谢谢你 我有一个具体问题。如果有多个开发人员在同一个分支上工作。每一次开发人员进行更改并推送到工作分支时,其余开发人员是否需要进行更改(以确保他们在本地拥有最新的代码即可工作)?
Eswar Rajesh Pinapala 2013年

不,不是每一次,仅当您要同步时。将分支的本地副本视为专用分支,将上游分支视为要合并到的分支。使用git fetch upstream后跟之类的方法git merge upstream/branch应该可以使您同步,而无需重写本地提交历史记录。如果这不是问题,只需git pull --rebase将您本地未进行的更改移动到上游分支的顶部即可。
哈拉尔德

@badZoke ....您如何处理第三个问题(处理2个使用同一文件的人)...
Moumit 2016年

25

我们与2个开发人员合作,并且使用以下工作流程:

  • 在Github上,我们有一个master分支和一个dev分支
  • master分支与生产相同或包含部署就绪代码
  • dev分支位于master之前,包含当前正在处理的所有新代码。
  • 在本地,我们都在dev分支上工作,并在准备就绪时推送到github
  • 另一个开发人员在推送新代码之前会从dev分支中获取任何新更改。
  • 当dev分支好时,我们与master分支合并
  • 在本地,我们有几个功能分支,问题分支等。

1
简单又好,非常感谢!我将从此开始,然后再进入复杂的内容;)
badZoke 2012年

如果另一个开发人员在推送代码之前获取新更改,而新更改又更改了他已经更改的代码,该怎么办?
wayofthefuture

+1,这的确是最简单的开始,并且效果很好。您使用的是所谓的简化gitflow:marcgg.com/assets/blog/git-flow-before.jpg
Jelle

5

我在这里只看到文字答案,所以我想我先发布一张不错的gitflow图片。图片描述了一千多个单词:

简化的Gitflow

  • 此流程也适用于持续部署。
  • 您的master分支包含当前在生产服务器上运行的代码。
  • 您的develop分支包含当前在登台/测试服务器上运行的代码。

+ 1,git flow或类似的东西可能是该问题的正确答案。
Maybe_Factor

0

我与其他3个开发人员一起工作,因此我们为此付出了很多努力。开发人员有时会将提交推送到真正尚未准备好的黄金时段的生产中,因为他们会将其他提交推送到他们的更改中,然后推送到生产中。版本分支对于我们来说似乎可以正常工作。因此,如果版本1.0是当前的稳定版本,我们将为v1.1-development创建一个分支。开发人员将在此分支中进行更改。我们的测试服务器检出该分支,并根据需要提取更改。当v1.1的所有功能准备就绪且测试完成时,我们将v1.1与master和push合并。通过分支机构,开发人员团队A可以使用v1.1,而开发人员团队B可以使用v1.2。两个团队都可以工作而不会互相影响。如果团队A开发出B可以使用的东西,

我们还使用用于立即更改的修补程序分支。

这里是一个链接到这个样子的图片。 http://nvie.com/img/git-model@2x.png


这听起来并不像你对我真的实现,因为它的目的是混帐流-这是每个独立的功能或修复分离到自己的分公司,而不仅仅是每一个版本
布拉德·托马斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.