git与其他最大区别是不需要服务器就可以运行,速度快,让代码交流更加简单。
Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。
Git 易于学习, 占地面积小,具有闪电般的快速性能。它具有Subversion,CVS,Perforce和ClearCase之类的SCM工具,具有廉价的本地分支,方便的暂存区域和 多个工作流等功能。
真正使它与几乎所有其他SCM脱颖而出的Git功能是其分支模型。
Git允许并鼓励您拥有多个彼此完全独立的本地分支。这些开发线的创建,合并和删除需要几秒钟。
这意味着您可以执行以下操作:
无摩擦上下文切换。创建一个分支来尝试一个想法,提交几次,切换回分支的位置,应用补丁,切换回进行实验的位置,然后将其合并。
基于角色的代码行。有一个分支,该分支始终仅包含生产中使用的分支,将您合并到其中的分支用于测试,以及几个较小的分支用于日常工作。
基于特征的工作流。为正在使用的每个新功能创建新分支,以便可以在它们之间无缝地来回切换,然后在该功能合并到主行中时删除每个分支。
一次性实验。创建一个分支进行试验,意识到它行不通,然后删除它-放弃工作-其他人都看不到它(即使您同时推过其他分支)。
值得注意的是,当您推送到远程存储库时,不必推送所有分支。您可以选择只共享一个分支机构,几个分支机构或全部。这往往使人们能够尝试新的想法,而不必担心必须计划如何以及何时将其合并或与他人共享。
有一些方法可以用其他系统来完成其中的一些工作,但是所涉及的工作要困难得多且容易出错。Git使这个过程变得异常简单,并且改变了大多数开发人员在学习过程中的工作方式。
Git很快。借助Git,几乎所有操作都在本地执行,这使其在必须与某个地方的服务器不断通信的集中式系统上具有巨大的速度优势。
Git是为在Linux内核上工作而构建的,这意味着从第一天开始,它就必须有效地处理大型存储库。Git用C编写,从而减少了与高级语言相关联的运行时的开销。从一开始,速度和性能就一直是Git的主要设计目标。
让我们看看常见的操作如何与Subversion相提并论,Subversion是类似于CVS或Perforce的常见集中式版本控制系统。越小越快。
包括Git在内的任何分布式SCM最好的功能之一就是它是分布式的。这意味着您无需对源代码的当前提示进行“检出”,而是对整个存储库进行“克隆”。
这意味着,即使您使用的是集中式工作流程,每个用户基本上都具有主服务器的完整备份。在崩溃或损坏的情况下,可以将这些副本中的每个副本向上推以替换主服务器。实际上,除非只有存储库的单个副本,否则Git不会有单点故障。
由于Git具有分布式特性和出色的分支系统,因此可以相对轻松地实现几乎无限数量的工作流。
集中式工作流非常普遍,尤其是从集中式系统过渡的人们。如果有人从您上次获取以来就进行了推送,那么Git将不允许您进行推送,因此所有开发人员都推送到同一服务器的集中式模型就可以正常工作。
Git使用的数据模型可确保项目每一位的加密完整性。每个文件和提交都被校验和,并在检出时通过其校验和进行检索。除了您输入的确切位之外,从Git中取出任何东西都是不可能的。
在不更改其后所有内容的ID的情况下,也无法更改Git存储库中的任何文件,日期,提交消息或任何其他数据。这意味着,如果您具有提交ID,则不仅可以确保您的项目与提交时的项目完全相同,而且可以确保历史记录中的任何内容都没有更改。
默认情况下,大多数集中式版本控制系统都不提供这种完整性。
与其他系统不同,Git具有称为“暂存区”或“索引”的名称。这是一个中间区域,可以在完成提交之前对提交进行格式化和检查。
让Git与其他工具区分开的一件事是,可以快速暂存某些文件并提交它们,而无需提交工作目录中的所有其他修改后的文件,也不必在提交期间在命令行中列出它们。
这使您只能暂存已修改文件的一部分。在意识到忘记提交其中一个文件之前,对文件进行两个在逻辑上不相关的修改的日子已经一去不复返了。现在,您可以暂存当前提交所需的更改,并暂存下一次提交的其他更改。此功能可根据需要扩展到文件的尽可能多的不同更改。
当然,如果您不想要这种控制,Git还可以轻松忽略此功能-只需在您的commit命令中添加“ -a”,以将对所有文件的所有更改添加到登台区域。
Git是根据GNU通用公共许可证版本2.0发布的,该版本是一个 开放源代码许可证。Git项目选择使用GPLv2来保证您共享和更改自由软件的自由,以确保该软件对其所有用户都是免费的。
Git项目是Software Freedom Conservancy(“ Conservancy”)的成员项目。根据非营利慈善宗旨,Conservancy代表Git项目在Marks中拥有权利。
Conservancy已采用本政策来保护商标(如下所述),并确保每个人都清楚Git软件的身份及其免费和开源性质。通过使用该政策,Git项目可以在确保商标以与美国商标法(美国注册4680534)一致的方式得到保护的同时,传播Git软件的使用。编写本政策的目的是允许所有清晰,适当地使用商标,同时以可能使用户混淆软件的来源的方式或暗示与Git项目之间不存在关联的方式反对商标的使用。通过遵守本政策,您可以帮助向公众宣传使用和开发Git软件的自由。
在本政策中,“商标”一词是指以下内容:
文字标记“ Git”
显示的徽标和图形标记可从https://git-scm.com/downloads/logos下载
口号“愚蠢的内容跟踪器”
本政策仅与与Git项目相关的商标有关,并不涉及与Git软件相关的任何版权。
商标的第一个突出部分应紧随其后,是注册商标(®)或未注册商标(™)的符号。例如:“ Git™”。
在不要求使用此类商标来保护与这些商标相关的知识产权的所有情况下(例如电子邮件,在线讨论和学术论文),都可以免除此要求。我们鼓励在可能的情况下使用适用的符号,但要认识到,许多用户会在非商业和非正式的环境中忽略它们。
您可以使用“ Git和Git徽标是Software Freedom Conservancy,Inc.的注册商标或商标,该公司是Git项目在美国和/或其他国家的公司所在地。” 当您需要在其他人拥有的商标列表中提及“ Git”时。
您可以在没有事先书面许可的情况下使用商标(受其他条款约束):
以实质上未修改的形式引用Git软件。“基本未修改”是指从Git项目提供的源代码构建,可能会进行少量修改,包括但不限于:默认情况下启用或禁用某些功能,翻译成其他语言,与特定操作系统兼容所需的更改发行,或包含错误修复补丁。
将Git软件标识为软件产品的独特组件。
实际上是指Git项目本身,其产品或协议。
另外,在以下情况下,未经书面许可,您可以使用商标来引用Git软件和Git项目之外的产品,服务或社区:
当指的是基本未修改的Git软件时,要说此类软件是Git的“派生”或“基于”。
当提及可与Git软件互操作的第三方软件产品和/或服务时,格式为“ [Git的产品名称]”,但前提是该使用符合本政策的其余规定。
在这些情况下,我们不收取使用商标的许可费用。但是,我们当然欢迎捐款。如果您有兴趣向Git项目捐款,请关注Conservancy,请访问https://git-scm.com/sfc。公益组织是美国501(c)(3)的公共慈善机构。
您不能通过以下方式使用商标:
以任何方式可能会导致混淆Git项目的身份,其软件的来历或软件许可。
以任何方式表明您和Git项目之间的关联程度比实际存在的程度更高。
以任何暗示Git的指定后继者的方式(例如,不允许使用“ Git ++”)。
除非Conservancy书面明确指出,否则以任何方式表明Git偏爱一个发行版,平台,产品等。
以任何其他方式淡化或以其他方式侵犯商标中Conservancy和Git Project的商标权。
指的是由第三方修改的Git软件,使其与Git软件无法操作,并且基本上未经修改。
此外,未经Conservancy书面许可,您不得将任何商标用作新词的音节或用作第三方商标或第三方产品或服务商标的Portmanteau(例如“ Gitalicious”,“ Gitpedia”)的一部分。允许。为避免产生疑问,本规定甚至适用于将商标用作音节或Portmanteau的一部分的第三方商标,以指代产品或服务对Git代码的使用。
本政策不授予使用“软件自由保护”,“自然保护”商标或使用第1节所列商标以外的任何其他商标的任何权利。本政策不授权您充当自然保护代理,代表Git项目或保护区签订任何协议或以其他方式承担任何责任。
未经Conservancy明确的书面许可,您不得创建和/或出售带有任何商标的商品。如果您有兴趣使用创建和/或销售带有任何商标的商品,请通过TRADEMARK@SFCONSERVANCY.ORG将您的设计证据发送给我们 。
水利部保留以下唯一权利:
确定是否遵守本政策。
以与其保护公众的使命相一致的方式修改本政策。
尽管有其他条款,但无论出于何种原因,无论何种形式,均应授予本政策例外。