Git分布式源代码管理如何?

时间:2010-03-02 21:06:07

标签: git version-control distributed

我是具有UNIX SCCS和Microsoft Visual SourceSafe经验的Git newbee。我只是在学习Git,它似乎有一个巨大而痛苦的学习曲线。我已经看到Git吹走了我没有提交的所有数据文件,这让我很担心。 (实用程序如何在没有警告的情况下删除数据文件超出我的范围。)

Linus Torvalds在他关于Git的视频中声称Git是分发的,吹嘘分发的好处,但除了拥有源代码副本(克隆)的人之外,并没有真正解释分发是如何工作的。

Git如何帮助分发? Git如何帮助恢复丢失的文件? Git发行如何运作? 我可以找到分发文件的位置吗? 有没有Git发行教程?

提前致谢!

4 个答案:

答案 0 :(得分:3)

阅读本文:http://www.newartisans.com/2008/04/git-from-the-bottom-up.html


至于你的其他问题:

Git如何运作?

这不是一个足以回答的问题。但一般来说,Git通过创建对象并将它们放在树中来工作。对象对应于您对内容所做的更改。树木本身就是物体。 Git跟踪的是对存储库中内容的更改。

发布如何运作?

因为所有存储库都可以是服务器,所以不同的存储库可以比较它们的树和对象,并确定这种存储库的当前状态与另一个存储库之间的更改。因此,他们能够从其他存储库推送/拉出。

它有何帮助?

如果你没有看到它对你的帮助,请坚持使用MVSS。


我认为可能存在词汇问题。分发不发货。 Git的分发意味着每个存储库都是服务器。这并不意味着它会跟踪克隆的位置(尽管您自己的存储库可以保留一个远程存储库列表,从中拉出/推送到该存储库)。

阅读PDF链接。然后按照他们的指示创建一个github存储库。 Fork其他人的存储库,任何人,只是为了看它是如何工作的。

答案 1 :(得分:1)

Git和Mercurial在处理SCM的分布式特性时遵循非常相似的模式。我无法与优秀的Git教程交流,但Mercurial上有一些很棒的作品。

Understanding Mercurial - 这有关于你问的确切问题的很好的信息......分发它的意义是什么?

Mercurial Book - 进行更深入的调查。

答案 2 :(得分:1)

Git和其他DVCS基本上将整个存储库“带”给用户。当我有一个git工作副本时,我也在我的硬盘上本地拥有整个存储库。没有其他人可以访问它,但我可以通过git系统提供的各种工具和方法共享它。

其他系统,例如SVN(Linus在视频中提及),在单个服务器上具有整个存储库。每个人都从该服务器推送和拉出。

再次,看着git,我的提交被隔离到了我的电脑。当我准备让其他人拥有它们时,我会以某种方式“发布”我的添加内容 - 可能在像SVN这样的中央服务器上,但这只是一种选择。我可以通过电子邮件通知你我

防止数据丢失

防止数据丢失的一个观点是,如果我拥有整个存储库的副本并且您拥有整个存储库的副本,如果我们中的任何一方丢失了我们的硬盘驱动器,我们可以重新克隆存储库。当然,这假设我们正在交流我们的进展并朝着共同的目标努力。

将此与SVN(或其他中央回购)进行比较,如果丢失了服务器硬盘驱动器,则必须从最后一个备份恢复回购如果有备份。这意味着有人需要管理服务器并确保备份正在运行等等。在某种程度上,DVCS本身就是这样做的。

当然,还有意外删除文件等错误导致的“数据丢失”,但这适用于所有VCS。

答案 3 :(得分:-2)

您可能已更改为其他分支。运行git branch以查看您拥有的分支,然后git co <branchname>

我个人真的很讨厌git。大学习曲线和奇怪的命令行界面。但它现在是选择的冷却剂。好享受!哦,是的,除非你也学习VSS,否则你将学习真正的坏习惯。 VSS是源控制不应该的一切。