Fixed some typos and mistakes.
This commit is contained in:
@ -1,11 +1,8 @@
|
||||
# 什么是Git
|
||||
|
||||
Git是目前世界上被最广泛使用的现代软件版本管理系统。Git本身亦是一个成熟并处于活跃开发状态的开源项目,它最初是由Linux操作系统内核的创造者Linus
|
||||
Torvalds在2005年创造。今天惊人数量的软件项目依赖Git进行版本管理,这些项目包括开源以及各种商业软件。Git在职业软件开发者中拥有良好的声誉,Git目前支持绝大多数的操作系统以及IDE(Integrated
|
||||
Development Environments)。
|
||||
Git是目前世界上被最广泛使用的现代软件版本管理系统。Git本身亦是一个成熟并处于活跃开发状态的开源项目,它最初是由Linux操作系统内核的创造者Linus Torvalds在2005年创造。今天惊人数量的软件项目依赖Git进行版本管理,这些项目包括开源以及各种商业软件。Git在职业软件开发者中拥有良好的声誉,Git目前支持绝大多数的操作系统以及IDE(Integrated Development Environments)。
|
||||
|
||||
Git使用分散式架构,是分散式版本管理DVCS(Distributed Version Control
|
||||
System)的代表。相较于例如CVS或者Subversion等集中式版本管理软件,Git并不是将代码的所有修改历史保存在中心服务器中。在Git中取而代之的是,所有参与项目的开发者都拥有各自的代码完全拷贝,并在自己的拷贝上进行软件开发。
|
||||
Git使用分散式架构,是分散式版本管理DVCS(Distributed Version Control System)的代表。相较于例如CVS或者Subversion等集中式版本管理软件,Git并不是将代码的所有修改历史保存在中心服务器中。在Git中取而代之的是,所有参与项目的开发者都拥有各自的代码完全拷贝,并在自己的拷贝上进行软件开发。
|
||||
|
||||
除了分散式的特点之外,Git的设计也针对性能,安全性和柔软性作了特别优化。
|
||||
|
||||
@ -13,12 +10,11 @@ System)的代表。相较于例如CVS或者Subversion等集中式版本管理软
|
||||
|
||||
Git的底层性能相较于其他版本管理软件有强大的优势。在Git中所有的操作包括提交修改,创建分支,融合分支,以及求取差分都经过了性能优化。这些优化来自于Git的开发者对实际一般代码开发模式的深度认识和广泛知识。
|
||||
|
||||
不同于某些版本管理软件,Git在决定代码修改历史以及保存形式的时候不会被文件名的变化所愚弄,Git关注的是文件的内容本身。在实际操作中,代码文件经历频繁的再命名,分解和合并。Git使用一种混合了差分编码(delta
|
||||
encoding,仅保存代码修改的差分),压缩,直接保存,以及版本元数据(version metadata objects)的管理方式。
|
||||
不同于某些版本管理软件,Git在决定代码修改历史以及保存形式的时候不会被文件名的变化所愚弄,Git关注的是文件的内容本身。在实际操作中,代码文件经历频繁的再命名,分解和合并。Git使用一种混合了差分编码(delta encoding,仅保存代码修改的差分),压缩,直接保存,以及版本元数据(version metadata objects)的管理方式。
|
||||
|
||||
分散式的架构也带来了极大的性能优势。
|
||||
分散式的架构也给Git带来了极大的性能优势。
|
||||
|
||||
比如说,一名开发成员Alice对代码进行了一些改动,添加了一些在2.0版本中准备公开的功能,然后将这些修改以及一份简单的说明进行了提交。随后她又增加了一些另外的新功能,并又作了一次新提交。显然这两次修改在版本历史中被分开各自进行了保存。在这之后Alice把代码切换到了1.3版本,修复了一些旧版本中的Bug(这和她新添加的功能没有关系)。这次修复的目的是为了让团队可以在公开2.0版本之前,释放一个1.3.1版本来解决1.3版本中的Bug问题。Alice马上又可以回到她之前进行的2.0版本功能开发之中(通过切换代码分支),这些由于Git的分散属性,都不需要网络连接中央服务器,她甚至可以在飞机中完成这一切。当她完成所有工作,只需要向远程的代码库推送(Push)自己的修改即可。
|
||||
比如说,现有一名开发成员Alice对代码进行了一些改动,添加了一些在2.0版本中准备公开的功能,然后将这些修改以及一份简单的说明进行了提交。随后她又增加了一些另外的新功能,并又作了一次新提交。显然这两次修改在版本历史中被分开各自进行了保存。在这之后Alice把代码切换到了1.3版本,修复了一些旧版本中的Bug(这和她新添加的功能没有关系)。这次修复的目的是为了让团队可以在公开2.0版本之前,释放一个1.3.1版本来解决1.3版本中的Bug问题。Alice马上又可以回到她之前进行的2.0版本功能开发之中(通过切换代码分支),这些操作由于Git的分散属性,都不需要通过网络来连接到中央服务器进行,她甚至可以在飞机中完成这一切。当她完成所有工作,只需要向远程的代码库推送(Push)自己的修改即可。
|
||||
|
||||
### 安全性
|
||||
|
||||
@ -48,7 +44,7 @@ Git是受到最广泛使用和支持的版本管理软件。这使得Git在以
|
||||
|
||||
绝大多数的软件开发者都有过Git的使用经历,很大一部分在校或者刚刚毕业的学生甚至只用过Git进行版本管理。虽然在一些公司开发成员可能在从其他版本管理软件迁移到Git的过程中要经历比较陡峭的学习曲线,但是大多数开发者以及他们未来的潜在开发者(学生)都已经具备了使用Git的基本技能,这就意味着他们不再需要额外的培训。
|
||||
|
||||
Git的普及还带来很多其他的好处,Git的市场占有率意味着很多第三方的服务和IDE都开始默认支持Git。比如我的DVCS客户端[Source
|
||||
Git的普及还带来很多其他的好处,Git的市场占有率意味着很多第三方的服务和IDE都开始默认支持Git。比如我们的DVCS客户端[Source
|
||||
Tree](https://www.atlassian.com/software/sourcetree),项目开发管理软件[JIRA](https://www.atlassian.com/software/jira),以及代码托管服务[Bitbucket](https://www.atlassian.com/software/bitbucket)。
|
||||
|
||||
如果你是一个开发新手并期待在未来构建自己的专业开发技能,Git毫无疑问是你在版本管理上的第一选择。
|
||||
@ -63,7 +59,7 @@ Git同时享有极好的社区支持和庞大的用户群体。你可以找到
|
||||
|
||||
#### 对于Git的批评意见
|
||||
|
||||
对于Git的一个常见批评是它非常难以掌握。Git中的某些术语对刚上手的朋友或者是使用其他系统的朋友可能会比较陌生,比如说,revert这个命令在Git中和在SVN或者CVS中具有不同的含义。不过尽管如此,Git依然向用户提供了非常强大的功能。学习掌握这些功能也许会花一些时间,但是一旦你学会了这些技能,它们会帮助你大大提高团队的开发效率。
|
||||
对于Git的一个常见批评是它非常难以掌握。Git中的某些术语对刚上手的朋友或者是使用其他系统的朋友可能会比较陌生,比如说,`revert`这个命令在Git中和在SVN或者CVS中具有不同的含义。不过尽管如此,Git依然向用户提供了非常强大的功能。学习掌握这些功能也许会花一些时间,但是一旦你学会了这些技能,它们会帮助你大大提高团队的开发效率。
|
||||
|
||||
对于曾经使用非分散式版本管理的团队来说,保存代码的中央服务器可能是他们所不想舍去的。不过,虽然Git的确是分散式的架构设计,但是你依然可以设立一个“官方”的代码库来强制保存所有的修改。使用Git时,由于所有的开发者都拥有完整的代码库拷贝,所以他们的工作不会被中央服务器的性能甚至有无左右。即便他们下线或者在外,他们依然可以随时查看代码库的修改历史。得益于Git的分散式特性,你可以保持自己原有的工作方式但得到Git带来的额外好处,有时候你甚至会发现自己不曾意识到有些事居然还可以这样干。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user