6

介绍

我以前用过 SVN,当我作为一个单独的程序员工作时,只是为了记录我在做的事情,所以我有点了解“存储库”和“提交”之类的想法,虽然不知道远不止于此。遗憾的是,“分支”、“合并”和“签出”对我来说是个谜。

我想开始使用 Git,因为我们有几个人不在办公室工作,他们抱怨有时无法访问其他一些版本控制系统,因为他们的 IDE 集成导致他们生闷气和摔倒当他们失去联系时。Git 的“每个工作目录都是一个存储库”的想法似乎应该在某种程度上解决这个问题。

无论如何,我已经下载了“Git Extensions”以将 The Shiny 添加到 Windows 上下文菜单等中,我发现我真的不知道应该如何使用它来控制我的版本控制。谷歌搜索后没有发现任何明显的东西,我向 Stack Overflow 提出以下理论场景,希望有人能用简短的语言告诉我该怎么做:

设想

我有三个项目。一个项目 ProjectReuse 被另外两个项目(ProjectA 和 ProjectB)使用。组织中的不同人员需要使用 Visual Studio 2010 编辑每个项目的代码。

我的桌面上有三个文件夹,分别标记为“ProjectReuse”、“ProjectA”和“ProjectB”。我打开了 Git 扩展窗口。一头头戴圣诞老人帽子的母牛正盯着我看。

问题

我现在该怎么做才能创建存储库,以便几个人(包括那些讨厌的不总是在现场的人)可以在需要时访问存储库,现场或关闭,有或没有永久连接到我们的服务器?

当第一个人需要编辑文件时,需要做什么?查看?分支?我必须向其他团队成员解释这一点,我自己对这些概念有点摇摆不定。我以前只对我的个人项目使用版本控制。

哄骗和借口

第一个“我该如何设置?” 问题是我最感兴趣的问题,但我想如果我要问白痴的指南,我不妨要求它对下一个偶然发现这个问题的白痴尽可能有用。我不是在这里寻找特别深入的答案;我只是对多用户版本控制系统的工作原理没有任何清晰的认识。一旦我想到了这一点,我应该能够自己把剩下的放在一起。

4

2 回答 2

10

好的,让我们直接了解 git 的第一件事。Git是分布式的。根据需要对自己重复多次:没有中央服务器、中央存储库或任何中央。与 SVN 完全相反,您并非都访问一个存储库(没有中心)。

您所做的是在某处创建一个存储库。然后其他人克隆(复制)它。现在每个人都有自己的存储库副本,并且可以随心所欲地使用它。分支名称甚至不需要跨存储库保持一致,尽管许多人这样做是因为它有帮助。

那么,如何设置呢?你初始化一个存储库,然后每个想要它的人都克隆它。在您的情况下,我建议每个项目都有自己的 git 存储库,而不是将所有三个集中在一起。

但是,但是,我到底应该如何管理一个开发团队,我听到你说?从不畏惧。我说没有中央存储库,但这并不能阻止您将其中一个存储库指定为发布存储库,将另一个存储库指定为实验性存储库或其他。

那么你需要的是一个工作流程。通常,您所做的是创建所说的发布存储库,然后说:“每个人都从这里的主人那里拉出来”。这代表您最新的“稳定”版本。现在你告诉每个人从这里分支并开发他们的新功能。他们这样做。当这些完成后,您要求人们将他们的更改合并回他们自己的 master 或任何地方,然后您,发布经理,从他们那里拉出来(可能到一个开发分支,但您可以很好地将它放到您的发布 master 中,因为它是微不足道的反向提交)。然后下一个人更新他们的主人并进行合并。他们解决自己的合并冲突等,直到您拥有所需的所有功能。您进行测试等,然后发布存储库确实将所有这些都拉入其主库。

在实践中,您可能会做很多不同的事情。例如,如果您有很多人,您将需要进行大量的沟通,因为如果很多人对您的共享项目做出不兼容的更改,就会有一些合并提交。为避免这种情况,用户可以相互拉取/合并或使用本地“共享”存储库。

它确实有效。

于 2010-12-15T15:38:24.067 回答
3

正如 Ninefingers 所说,只需初始化一个新的存储库并让其他人克隆它。请记住,当您需要公共(或中央)存储库时,请创建共享存储库而不是私有存储库。最简单的方法是首先创建一个个人存储库,然后将其克隆到每个人都可以访问的地方(例如网络共享)作为共享存储库。

我在这里为 Git 扩展创建了一些视频教程: http ://code.google.com/p/gitextensions/ 视频教程有点旧而且不是很好,因为我没有麦克风或任何视频编辑技能,但是这应该足以让你开始。

祝你好运!

于 2010-12-15T20:44:23.267 回答