我是具有UNIX SCCS和Microsoft Visual SourceSafe经验的Git newbee。我只是在学习Git,它似乎有一个巨大而痛苦的学习曲线。我已经看到Git吹走了我没有提交的所有数据文件,这让我很担心。 (实用程序如何在没有警告的情况下删除数据文件超出我的范围。)
Linus Torvalds在他关于Git的视频中声称Git是分发的,吹嘘分发的好处,但除了拥有源代码副本(克隆)的人之外,并没有真正解释分发是如何工作的。
Git如何帮助分发? Git如何帮助恢复丢失的文件? Git发行如何运作? 我可以找到分发文件的位置吗? 有没有Git发行教程?
提前致谢!
答案 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是源控制不应该的一切。