version control(版本控制)

版本控制系统(version control system),是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。用的比较多的如svn,git等。

为了让不同系统上的开发者能够协同工作,集中化的版本控制系统应运而生(CVCS)。这类系统都有一个单一的集中管理的服务器,保存所有文件的修订版本。而协同工作的人们都通过客户端连接到这台服务器,获取最新的文件或者提交更新。集中化的版本控制系统,最显而易见的缺点是中央服务器的单点故障问题。如果宕机,那么就会出现谁都无法提交更新的情况,那么也就无法协同工作;如果磁盘发生故障,而备份又不够即时,那么就有丢失数据的风险,最坏的情况是丢失整个项目的历史更改记录。因此,分布式版本控制系统问世了(DVCS)。

在分布式版本控制系统中,客户端不仅仅是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。所以每一次提取的操作,都是对代码仓库的完整备份,因此也就不必担心协同工作用的服务器发生故障。

Git和其他版本控制系统的主要差别在于:Git只关心文件数据的整体是否发生了变化,而多数的其他系统则只关心文件内容的具体差异,它们在每个版本中记录着各个文件的具体差异。在Git中的绝大多数操作都只需要访问本地文件和资源,不需要联网。这是因为Git在本地磁盘上就保留着所有当前项目的历史更新,所以处理起来速度飞快,这是使用空间换时间的处理方式。使用Git,即使在没有网络或VPN的情况下,你同样可以非常愉快的频繁提交更新,等到有了网络的时候再提交到远程的仓库。

Git入门

使用Git前,需要先建立一个仓库(repository)。您可以使用一个已经存在的目录作为Git仓库或创建一个空目录。

使用您当前目录作为Git仓库,我们只需使它初始化。

git init

使用我们指定目录作为Git仓库。

git init newrepo

从现在开始,我们将假设您在Git仓库根目录下,除非另有说明。

添加新文件

我们有一个仓库,但什么也没有,可以使用add命令添加文件。

git add filename

可以使用add... 继续添加任务文件。

提交版本

现在我们已经添加了这些文件,我们希望它们能够真正被保存在Git仓库。

为此,我们将它们提交到仓库。

git commit -m "Adding files"

如果您不使用-m,会出现编辑器来让你写自己的注释信息。

当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改,我们可以使用-a标识。

git commit -a -m "Changed some files"

git commit 命令的-a选项可将所有被修改或者已删除的且已经被git管理的文档提交到仓库中。

千万注意,-a不会造成新文件被提交,只能修改。

发布版本

我们先从服务器克隆一个库并上传。

git clone ssh://example.com/~/www/project.git

现在我们修改之后可以进行推送到服务器。

git push ssh://example.com/~/www/project.git

取回更新

如果您已经按上面的进行push,下面命令表示,当前分支自动与唯一一个追踪分支进行合并。

git pull

从非默认位置更新到指定的url。

git pull http://git.example.com/project.git

删除

如何你想从资源库中删除文件,我们使用rm。

git rm file

分支与合并

分支在本地完成,速度快。要创建一个新的分支,我们使用branch命令。

git branch test

branch命令不会将我们带入分支,只是创建一个新分支。所以我们使用checkout命令来更改分支。

git checkout test

第一个分支,或主分支,被称为"master"。

git checkout master

对其他分支的更改不会反映在主分支上。如果想将更改提交到主分支,则需切换回master分支,然后使用合并。

git checkout master

git merge test

如果您想删除分支,我们使用-d标识。

git branch -d test

猜你喜欢

转载自www.cnblogs.com/XZY30/p/10478368.html