浅谈代码管理的必要性及方式

2020-01-31大约16分钟

说起代码管理,首先需要弄清楚,我们为什么需要代码管理。

管理源代码文件,究竟会遇到什么样的问题?

可以想象一下,你现在正在写一份代码,然后你很有可能需要做一些事情,比如:

1. 对代码进行尝试性修改

你想对现在代码做了些修改,但是你不确定这个修改到底是不是好使的,所以你想有一个很方便的办法如果不好使的话,可以回滚到之前的代码。

对于这个问题一些可能的办法是我先把现在的这份代码拷贝一下,做个备份。然后修改新的代码,如果不好使的话,我再把新的代码删掉用上旧的代码。如果需要反复尝试很多次的话,那么这样就需要做很多次拷贝,保存很多份不同代码,然后就还要同时记得住每份代码到底保存的是什么内容。

这样做的夸张的话,就会出现这种场景:

图片

看起来真的很难记得住到底每个文件夹到底保存什么内容哎!

这个例子只是一种极端情况,即一份文档、代码需要频繁修改的情况下,普通初学者写代码可能很难会出现这种状况。

2. 保存多个版本。

你想追踪每次改动的记录,这样你就知道你到底每次都改了哪些东西 。这问题很像第1个问题,简单的办法就是做文件拷贝,然后将很多不同的文件夹来保存。 这样有可能会出现另外一种场景:

图片

这样看起来似乎也很乱啊

3. 共享文件。

你想把你的代码发送给同学或者同伴,你是通过电子邮件发给他呢?还是通过U盘拷贝给他呢?

电子邮件、U盘拷贝或者文件共享都是一些办法,做起来容易,但如果说后来有修改了,再发送一次?若是别人也把这份代码给修改了呢,大家怎么把修改一起合并起来呢?要是分享给一个人可能还好,分享给几十个人呢?是不是真的很难呢!

大家看完这些问题就会发现,其实这个问题并不只是代码文件的修改,任何文件的修改都会面临到这样的问题。比如知乎上有篇文章,介绍设计师是如何管理他们自己的文件的,其方法最终还是通过更好的对文件进行分类和命名,来解决这些问题。不过对程序员来说,我们面临的问题可能会更复杂,更多种多样,因为我们可能会需要追踪到每行代码的改动,那么仅仅通过文件夹的分类和命名,这样是解决不了我们的问题的。

那么要解决这些问题,就轮到我们的代码管理工具出场了。

代码管理工具

代码管理工具,目前比较流行和常用的主要有SVN和Git。从流行度上来说,目前比较火的应该是Git,大名鼎鼎的“全球最大同性交友网站Github支持的就是Git,所以很多新公司和新项目,如果大家都希望用新技术的话,那么很可能会选择Git来管理自己的代码。

当然从功能上和技术上来说,不管用SVN还是Git,一般情况下都是能够解决上面提到的问题的。简单来说,你可以在这些系统上为自己不同的代码建不同的仓库,然后每次修改完代码之后都可以做一次提交,提的时候加上注释来说明这次提交到底修改了哪些东西。这样以后你想要回滚代码的话,你就可以把代码恢复到之前都任意一次提交;别人如果想拿你的代码的话,别人也可以连上你的仓库,然后拉取你的代码,如果你们都有代码修改的话,修改完之后,通过工具直接提交合并到这个仓库就可以了。如果你想在代码上做不同尝试的话,你甚至可以建不同的分支,每个分支都可以做不同的代码实现,互不影响,最终想合并的时候还可以合并不同分支的代码到同样一个分支上。

Git和SVN有些明显的差别,简单来说,最主要的区别是:Git是分布式的,而SVN是集中式的。

什么意思呢?使用Git这种分布式的,可以本地克隆一份远程的仓库,这样日常开发哪怕网络断了,也不影响代码合并和提交;而如果使用SVN这种集中式的呢,如果SVN服务器是在远程的服务器上,那么如果网络断了,根本无法提交代码更改,前面说的前两个问题就仍然是问题了。

对于初学编程者来说,推荐学习使用Git,虽然刚开始需要了解的概念比较多,但Git应该是未来发展的趋势,在很多公司都有普遍的使用,在开源领域更是占据了不可撼动的地位。

Git很强大,用起来也不难学,可以参考这个简洁的教程来学习:Git使用简明教程