我是一名 Git 新手,拥有 UNIX SCCS 和 Microsoft Visual SourceSafe 经验。我刚刚学习 Git,它似乎有一个巨大而痛苦的学习曲线。我已经看到 Git 删除了所有我未提交的数据文件,这让我很担心。 (实用程序如何在没有警告的情况下删除数据文件超出了我的范围)。
Linus Torvalds 在他的 Git 视频中声称 Git 是分布式的,宣扬了分布式的好处,但除了每个人都拥有源代码的副本(克隆)之外,并没有真正解释分布式是如何工作的。
Git 如何帮助分发? Git 如何帮助恢复丢失的文件? Git 分发是如何工作的? 我可以找到文件分发的位置吗? 有Git分发教程吗?
提前致谢!
阅读此内容:http://newartisans.com/2008/04/git-from-the-bottom-up/
至于你的其他问题:
Git 是如何工作的?
这个问题不够具体,无法回答。但一般来说,Git 的工作方式是创建对象并将它们放入树中。这些对象对应于您对内容所做的更改。树本身就是物体。 Git 跟踪的是对存储库中内容所做的更改。
分销如何运作?
因为所有存储库都可以是服务器,所以不同的存储库可以比较它们的树和对象,并确定该存储库的当前状态与另一个存储库之间的变化。因此,他们能够从其他存储库推送/拉取。
有什么帮助?
如果您看不出它对您有何帮助,请坚持使用 MVSS。
我认为可能存在词汇问题。配送不是运送。 Git 的分布意味着每个存储库都是一个服务器。这并不意味着它将跟踪它被克隆的位置(尽管您自己的存储库可以保留从中拉取/推送到的远程存储库列表)。
阅读我链接的 PDF。然后按照他们的指示创建一个 github 存储库。 Fork别人的存储库,任何人,只是为了看看它是如何工作的。
Git 和 Mercurial 在处理 SCM 的分布式特性方面都遵循非常相似的模式。 我无法谈论好的 Git 教程,但 Mercurial 上有一些很棒的作品。
了解 Mercurial - 这对于您所问的确切问题提供了很好的信息...分发它意味着什么?
Mercurial Book - 进行更深入的调查。
Git 和其他 DVCS 基本上将整个存储库“带”给用户。当我有 git 工作副本时,我的硬盘上本地也有整个存储库。其他人无法访问它,但我可以通过 git 系统提供的各种工具和方法来共享它。
其他系统,例如 SVN(Linus 在视频中提到),将整个存储库放在单个服务器上。 每个人都从该服务器推送和拉取。
再次查看 git,我的提交被隔离到我的计算机上。当我准备好让其他人拥有它们时,我就会以某种方式“发布”我的添加内容——也许是在 SVN 这样的中央服务器上,但这只是一种选择。我可以通过电子邮件将我的更改发送给您。
防止数据丢失的一个观点是,如果我有整个存储库的副本,而您也有整个存储库的副本,如果我们中的任何一个丢失了硬盘驱动器,我们可以重新克隆存储库。当然,这是假设我们正在交流进展并朝着共同目标努力。
与 SVN(或其他中央存储库)相比,如果您丢失了服务器硬盘,则必须从上次备份中恢复存储库如果您有备份。这意味着需要有人管理服务器并确保备份正在运行等。DVCS 在某种程度上本质上就是这样做的。
当然,还会因意外删除文件等错误而导致“数据丢失”,但这适用于所有 VCS。
您可能换到了不同的分支。运行
git branch
查看您有哪些分支,然后运行 git co <branchname>
。
我个人真的很讨厌git。巨大的学习曲线和奇怪的命令行界面。但它是目前的首选冷却剂。所以享受吧!哦,是的,不要学习 VSS,除非你也学过,否则你会学到非常非常坏的习惯。 VSS 是源代码控制不应该有的一切。