Linus Torvalds在他关于Git的视频中声称Git是分布式的,并宣传了分布式的好处,但除了每个人都有源代码的副本(克隆)之外,他并没有真正解释分布式是如何工作的。
Git如何帮助分发? Git如何帮助恢复丢失的文件? Git分发是如何工作的? 我能找到文件被分发到哪里吗? 是否有Git分发教程?
提前致谢!
阅读这篇文章:http://www.newartisans.com/2008/04/git-from-the-bottom-up.html
至于您的其他问题:
Git是如何工作的?
这个问题不够具体,无法回答。但通常来说,Git通过创建对象并将它们放入树中来工作。这些对象对应于您对内容所做的更改。树本身也是对象。Git跟踪的是代码库中内容所做的更改。
分发是如何工作的?
因为所有仓库都可以作为服务器,不同的仓库可以比较它们的树和对象,并确定另一个仓库的当前状态和这个仓库之间的差异。因此,它们能够从/推送到其他仓库。
它有什么用处?
如果您不知道它如何帮助您,请坚持使用MVSS。
我认为可能存在词汇问题。分发不是指出货。Git的分发意味着每个仓库都是一个服务器。这并不意味着它将跟踪从哪里克隆过来(尽管您自己的仓库可以保持从中拉取/推送的远程仓库列表)。
阅读我提供的链接中的PDF文件。然后按照他们的指示创建一个github仓库。Fork别人的仓库,任何一个,只是为了看看它是如何工作的。
Git和Mercurial都遵循处理SCM分布式特性的非常相似的模式。我无法评论好的Git教程,但是有一些关于Mercurial的优秀作品。
理解Mercurial - 这里有关于你所问的确切问题的好信息...它被分布式意味着什么?
Mercurial书籍 - 用于更深入的研究。
Git和其他分布式版本控制系统基本上将整个代码库“带”给用户。当我有一个git工作副本时,我也在本地硬盘上拥有整个代码库。除了我可以通过git系统提供的各种工具和方法共享它之外,没有其他人可以访问它。
其他系统(例如Linus在视频中提到的SVN)将整个代码库放在单个服务器上。每个人都从该服务器推送和拉取。
再次看git,我的提交仅限于我的计算机。当我准备好让其他人拥有它们时,我会以某种方式“发布”我的添加 - 也许是在像SVN这样的中央服务器上,但那只是一个选项。我可以通过电子邮件发送我的更改。
防止数据丢失的一个角度是,如果我拥有整个代码库的副本,而您也拥有整个代码库的副本,如果我们中的任何一个人丢失了硬盘,我们都可以重新克隆代码库。当然,这假设我们正在交换进展并朝着共同的目标努力。
与 SVN(或其他中央仓库)相比,如果您丢失服务器硬盘,则必须从上次备份还原存储库如果您有备份。这意味着需要有人管理服务器并确保备份正在运行等。分布式版本控制系统在某种程度上天生就具备这种功能。你可能切换到了不同的分支。运行git branch
查看你有哪些分支,然后运行git co <branchname>
。
个人而言,我真的很讨厌git。它有一个巨大的学习曲线和奇怪的命令行界面。但现在它是首选的版本控制工具。所以享受吧!哦对了,除非你必须使用,否则不要学习VSS,因为你会养成非常非常糟糕的习惯。VSS是所有源代码控制工具都不应该有的。
git clean
显式地删除,Git 不会删除工作目录中未被追踪的文件(即使使用git clean
也需带上-f
标志才能删除任何东西)。 - mipadigit reset --hard
。 - piotogit reset --hard
不会删除未提交的文件。 - mipadireset --hard
命令。 - Cascabel