什么是Git?我为什么想要它?

什么是Git?我为什么想要它?,git,Git,我对编程相当陌生,但我觉得我已经掌握了窍门,我正在尽可能多地学习。我一直在读Git对于一个编程项目来说是绝对重要的,但我似乎不知道它到底做了什么。谷歌也不想告诉我。该网站称其为“分布式版本控制系统”。。。嗯 有人能向新手解释一下这是什么以及为什么它如此重要吗?从维基百科开始: 基本上,版本控制系统通过跟踪各种文件来帮助您管理和组织软件项目。它们允许您“在时间上后退”,按需检索文件的任何旧版本,为bug修复、功能开发等创建多个并行“分支” 它们非常棒,git似乎是版本控制系统的一个非常棒的例子。这

我对编程相当陌生,但我觉得我已经掌握了窍门,我正在尽可能多地学习。我一直在读Git对于一个编程项目来说是绝对重要的,但我似乎不知道它到底做了什么。谷歌也不想告诉我。该网站称其为“分布式版本控制系统”。。。嗯

有人能向新手解释一下这是什么以及为什么它如此重要吗?

从维基百科开始:

基本上,版本控制系统通过跟踪各种文件来帮助您管理和组织软件项目。它们允许您“在时间上后退”,按需检索文件的任何旧版本,为bug修复、功能开发等创建多个并行“分支”


它们非常棒,git似乎是版本控制系统的一个非常棒的例子。

这里有一个面向新手的git简介:


Git是备份。备份是每个使用计算机的人都应该熟悉的概念——备份是数据的安全保障。Git是你思想的备份。(通常的警告同时适用于备份和Git——如果您不知道它是有效的,并且您可以有效地使用它,那么它就是无用的。)

Git是一个版本控制系统,或同一文件的不同版本之间的变更集。也许最容易将其视为一种替代方法,即在名为
my_file
my_file\u test
my_file\u test2
my_file\u retired20030411的文件夹中放置四个文件,以及一个名为
my_file\u changes.log的文件,其中记录了文件的四个版本之间的变化,你为什么要改变他们。(尽管Git比这多得多。)

Git是软件开发中的关键技术。它允许用户同时进行更改,并使这些用户能够有效地相互协作(无需花费大量时间在代码上,以确保您可以将两个版本合并在一起,而不会覆盖彼此的更改)

Git甚至比这更重要

该网站称其为“分布式版本控制系统”

让我们从版本控制系统开始。这正是它所说的——它是一种存储和管理各种版本的东西的方法。这在编程中极为重要,因为项目在开发过程中会被多次更改,并且访问比当前版本更多的内容通常会很有用。它也将被多人改变;必须有某种方式将每个人的变化结合起来

最简单的版本控制可能是偶尔备份整个项目,并在不同的开发人员之间传递这些快照或补丁。很明显,如果你采取这种幼稚的方法,你最终会遇到困难;这就是专用版本控制系统的用武之地

版本控制系统将以智能的方式跟踪您的所有历史记录,并允许您浏览历史记录,查看有关更改的所有信息:更改是什么、更改是谁以及更改的原因。稍微复杂一点,他们通常会有一些分支(为多个开发人员创建不同的开发线)和合并(将这些分支重新组合在一起)的概念。除此之外,大多数版本控制系统还将提供许多更高级别的功能。仅举一个例子,git有一个名为“对分”的工具,它可以让您通过历史进行二进制搜索,以查找何时引入了特定的bug。干净的东西

版本控制有两大类:集中式和分布式。在集中式系统中,有一个中央存储库。它包含项目的所有历史记录,任何想要与该历史记录交互的人都必须通过该中央存储库。另一方面,像git这样的分布式系统为每个人提供了这样的历史。每个开发人员最终都会得到存储库的一个副本(git中称为克隆),这是完全自给自足的。不需要与公共中央存储库交互,除非是作为一种实用的方式,一种发布内容供他人查看的方式。这使得多人同时在同一个项目上工作变得更加简单,可能不需要访问internet,并且还使每个人都可以在自己的存储库中使用版本控制系统的全部功能,而不是中央存储库的有限公共功能

要想从想要记住历史的基本知识入手,从定性的角度了解如何使用git这样的系统,请尝试


有关该主题的更多一般信息,请访问维基百科:。

看看Linus Torvald在一篇文章中对git的看法 (谷歌科技讲座系列)


这就是莱纳斯:“我是一个非常愤世嫉俗和不信任的人,我认为你们中的大多数人是完全不称职的。”-对一屋子的谷歌人来说

。。。但我相信,在回答这个问题时,其中一些问题会得到解答。(非常感谢您的想法、评论和更正。)严格来说,git管理的是“快照”,而不是补丁,虽然数据最终在内部得到了增量压缩,但我不喜欢这种说法,因为它暗示git是分布式VCS,因此它不是集中式VCS,也就是说git工作流是完全分布式的。那当然不是真的。你可以很容易地拥有一个单一的git回购协议,它是你的集中式回购协议,还有几个其他的协议,它们都会推动它。我只想指出一点,因为这个问题是针对git新手的。Tom对这篇优秀的文章表示赞赏,我还推荐了关于DVCS前端的第一章:这不应该是StackOverflow问题,应该是