这些词在Git中是什么意思:存储库,派生,分支,克隆,跟踪?


130

老实说,我不清楚这里的语义。它们都是关于代码+历史单元的副本/变体,但是过去我不确定我能说什么。这个逻辑结构在某处有解释吗?


5
我建议阅读Pro Git书(progit.org/book)的前几章。
ewall

61
+1。很多git教程向您展示如何执行某些任务,而无需解释某些单词的含义或git的工作原理。寻求解决这些主题的资源是一个合理的问题。
丹尼尔·斯图兹巴赫

14
希望我能+1 Daniel的评论更多。尽管某些术语(例如存储库)的含义应该很明显,但它们之间的关系并不总是(分支与分支),而真正的含义很容易被习惯于集中式VCS的人误解。此外,请看Pro Git的“分支是什么?” 部分-基本用户是否真的想了解Blob和树,还是只想定性地了解分支是什么?
卡斯卡贝尔

1
@DanielStutzbach可以提交有关书中未明确说明的评论。(我不知道该说什么的正确术语。)我这样做了,我说这本书需要定义一个存储库。我同意,很难从理解得很好的人那里获得概念性材料。那本书(目前)谈论的是数据库,但没有定义它们在这种情况下的含义,也没有提及什么是存储库。
user34660 '18

Answers:


146

存储库只是存储工作历史记录的地方。它通常位于.git工作副本的子目录中-您正在处理的文件的最新状态的副本。

要派生一个项目(在某个时间点从某人的存储库获取源代码,并对它应用自己的不同更改),您可以克隆远程存储库以创建它的副本,然后在本地存储库中做自己的工作,提交更改。

在存储库中,您具有分支,这些分支实际上是您自己的存储库中的分支。您的分支将在您的存储库中有一个祖先提交,并且随着您的更改而与该提交有所不同。您以后可以合并分支更改。分支使您可以同时使用多个不同的功能。

您还可以跟踪远程存储库中的各个分支。这样,您就可以从另一个人的分支中提取更改并将其合并到您自己的分支中。如果您和朋友一起使用新功能,这可能会很有用。

在线上有很多很棒的git书。查看ProGitGit Magic入门,以及官方教程和社区书籍。


当然,阅读F手册和教程是基础。但这对我来说似乎是对整个内容的一个很好的总结。非常感激!
brasofilo 2012年

请注意,您可以将本地工作目录切换到新分支(“ git checkout <new_branch>”)。在这种情况下,您要切换到的分支的内容将替换本地工作目录中的文件。但是,您不必松懈工作:Git将您在上一个分支上所做的所有提交的更改(“ git commit”)存储在Git的“数据库”(隐藏的.git文件夹)中,并允许您切换回文件。
KrisWebDev

3
我认为需要特别提及的是,从历史上看,无论您使用哪种VCS,叉和分支都被视为两件独立的事情。分支被认为是开发人员之间的有利和暗含的协议。分叉更为严重,因为它暗示着从事项目工作的开发人员在某些事情上未达成共识,因此决定分道扬ways。双方达成协议后,成功的分叉通常会合并到一个项目中。从那时起,Git(和GitHub)就模糊了这些术语,并且这两个术语基本上代表着相同的想法,但方式不同。
redteam316 2014年

因此,存储库中没有项目文件?您说的是存储工作历史的地方。这就是全部?只是文件的历史记录,而不是文件本身?
user34660 '18

13

我将使用RTFM回答我自己的问题。

但是,请仔细阅读手册。正如作者所说:

“由此得出的结论是,只有了解Git的工作原理,您才能真正使用Git。仅仅记住您应该在什么时间运行哪些命令在短期内会起作用,但是卡住或者更糟地破坏某些东西只是时间问题。

“不幸的是,Git上已有的资源中有一半只是采用这种方法:它们会引导您逐步了解何时运行哪些命令,并且希望您只要模仿这些命令就可以做的很好。另一半确实涵盖了所有概念,但是据我所见,它们以一种假定您已经了解Git的工作方式的方式来解释Git。”


此介绍似乎已移至sbf5.com/~cduan/technical/git。原始URL现在仍然可以使用。
埃里克·安德森

1
在上下文中,这是正确的。如果您需要立即提高工作效率,或者实际上只是签入代码,则可以不对git的工作原理有深入的了解。教程很好。这就是我进入git的方式。但是,如果或者当您需要更高级的功能(例如创建分支,fork,rebase和其他更高级的任务)时,则必须知道git的工作原理,尤其是当您的背景位于集中式源代码管理中时。
菲尔

3

这篇GoogleTechTalk是对Git的精彩介绍,可以在学习语言的同时了解幕后实际发生的情况。它由Git的早期贡献者提供,他在2007年作了此演讲,作为对Git的介绍。如果您观看此演讲,您不仅会知道每个词的含义,例如存储库,分支,分支等,而且还将知道当每个词都被制作,合并等时幕后发生的事情。

该地址很长,但内容非常丰富。它还将Git与其他版本控制系统进行了对比,因此您可以深入了解Git的创建方式以及与其他控制系统相比的相对优势。即使谈话内容陈旧,但起床和跑步非常有帮助。在进入手册之前,我会先看一下。我相信,结果将使事情变得更加有意义。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.