版本控制:为什么没有它就无法生存

如果您使用的是计算机,则可能会遇到文件版本不同的问题。无论是编写的文本文件,数据文件还是程序代码,您始终将面临保存还是替换先前版本或除先前版本之外保存的决定。.


对于单一开发人员而言,跟踪程序的不同版本已经是一个挑战,更不用说您可能制作的所有不同备份了.

现在想象一下,您正在作为一个团队的成员,参与一个涉及文本,多媒体和编码的项目–简而言之,作品中的各种信息.

进一步想象:说每个数据或程序文件是由几个人处理的(“并发”)—每个人都添加,保存,编辑和再次保存。您到底将如何知道谁做了什么,什么时候以及为什么做,并能够追踪所有这些变化?

您需要版本控制(VC).

在本文中,我们将介绍什么是版本控制以及在最新一代之前的几年中它是如何发展的.

特别是,我们将研究Git,这是制作Linux的人们越来越流行的版本控制应用程序,并看到一些示例,说明如何使用Git重新控制文件的所有这些不同修订版本.

VC行话入门

版本控制具有自己的语言。在指定应跟踪其更改的目录或文件组之后,这些目录或文件称为存储库或仓库.

更改是自动跟踪的,但它们仅记录为单个动作集合(称为提交),并记录为具有唯一修订号的更改集。这样可以确保您可以调用文件的最新版本.

如果要比较两个修订版本(例如,如果某个漏洞在某个时候潜入了代码中),则版本控制工具应允许您比较两个文件,这意味着可以看到两个文件之间的差异.

要在没有风险或损坏风险的情况下试验存储库,可以创建一个分支,表示该存储库的副本,然后可以并行进行修改。如果分支中的更改令人满意,则可以将该分支与主仓库(主仓库)甚至另一个分支合并.

合并时,现代版本控制系统通常足够聪明,可以根据每个分支或存储库保持的更改历史来确定应从哪个分支或存储库中包含哪些更改。如果版本控制系统无法决定,那么您可能必须手动解决冲突.

版本控制系统演进

到目前为止,版本控制工具已经出现了三代,每一代都增加了灵活性和并发可能性.

第一代

使用原始版本控制系统,尽管可以由多个人处理同一个文件,但是他们不能同时进行。该文件已被锁定,以防止其他人同时访问该文件.

这种工具的一个例子是从1972年开始用于软件开发的SCCS(源代码控制系统)。 RCS(修订控制系统)被创建为SCCS的免费替代产品,并提供了更快的操作,分支和合并(仍然仅允许一个开发人员在给定的时间处理文件).

第二代

今天正在使用的许多版本控件都在此类别中。可以同时修改文件,尽管用户必须先合并工作中的当前修订才能提交.

CVS(并行版本系统)是一个实例,它允许使用存储库来进行客户端/服务器交互。 SVN(或完整的Apache Subversion)可能是当今使用的所有版本控制系统中最流行的.

SVN可以被认为是对CVN的重新设计,具有现代基础和以前CVS局限性的解决方案.

第三代

也称为DVCS(分布式版本控制系统),它具有分离合并和提交操作的可能性,其中最著名的示例是Git.

文件不再有集中的基础;不同的分支机构拥有不同的部分,这也为离线修订版本打开了大门.

一个使用Git的真实示例

使用真实版本控制系统时,上述操作的外观如何?

我们以Linux命令行为例,以Git为例。首先,我们为当前目录创建一个Git存储库。我们使用pwd命令查看我们的位置:

1个
2

$ pwd

/用户/ HJ /桌面/存储库/应用程序

然后,我们使用git init命令创建存储库(“主”存储库)并从Git获得确认:

1个
2

$ git init

在/Users/HJ/Desktop/repos/apps/.git中初始化了空的Git存储库

假设我们将一个新文件main.c添加到工作目录中。使用git status命令将为我们提供以下信息:

1个
2
3
4
5
6
7
8
9

$ git状态

#在分支主管上

#初次提交

#未跟踪的文件:
# (采用 "git添加 …" 包括将要提交的内容)

#main.c

我们使用git add来跟踪文件main.c

1个 $ git添加main.c

我们将git commit与消息(-m选项)一起使用,该消息说明我们正在做什么以提交main.c文件中的更改.

1个 $ git commit -m "将main.c添加到存储库"

现在我们可以使用git branch命令创建一个分支(例如“ test”):

1个 $ git分支测试

再次单独使用git branch命令仅列出了我们现在拥有的存储库:

1个
2
3

$ git分支

测试

*大师

最后,要开始在该分支中的main.c副本上的“ test”分支中工作,请使用git checkout命令来确认我们现在正在“ test”分支中工作.

1个
2

$ git checkout测试

切换到分支 "测试"

要返回“ master”分支,只需再次使用git checkout命令:

1个
2

$ git checkout master

切换到分支 "主"

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me