目前使用版本控制系统是因为一般开发都是协作开发,但是简单来说就是大家一起开发一个项目,分别写代码,然后放在一起,你可能需要一段代码。就是大家一起写一套代码。这就需要一个版本控制系统,将每个人编写的代码存储在一个地方。这对应于备份服务器。
目前主流的版本控制系统是Git和SVN,其中Git似乎更流行。当然,使用SVN的公司有很多。目前我有过几家使用SVN经验的公司,所以我将在本文中详细解释它们。我们总结了SVN的技巧和SVN介绍,你应该知道的如何使用它,以及在工作中如何经常使用它。
首先我们先来了解一下什么是SVN。以下是来自百度百科的解释:
SVN是Subversion的缩写,是一个开源的版本控制系统,允许多人共同开发同一个项目,共享资源,最终通过分支管理系统的高效运行实现集中管理。管理。
如果还是不明白,建议百度搜索。例如,您可以搜索“什么是SVN?”我们建议您阅读百度百科或维基百科中的更多信息。上面说的很详细了。
要使用SVN,您必须安装它。首先,我们将解释Windows 上的安装。简单来说,如果你想使用SVN,你需要安装一个客户端。比如你想听音乐,就需要安装客户端。你需要在电脑上安装音乐软件,当然你可以选择安装QQ音乐或者网易云音乐。
SVN也有版本可供选择。在Windows 上,它是小乌龟。这是该客户端的别名。它被称为“TortoiseSVN”。 Tortoise是乌龟的意思,因此得名小乌龟。敬请期待。图标:
嗯,是不是很可以忍受呢?我想下载:https://tortoisesvn.net/downloads.html
根据你的电脑情况选择安装即可!
有几件事需要记住。
只需选择这个即可。另外,在上面选择要安装下载的版本后,在弹出的页面左下角选择同意,等待下载。如果你很长时间不想下载,可以手动点击页面第一行的链接仔细看看,不过那部分的英文还是可以理解的,所以我就不贴了图片在这里。
如果需要使用命令行,可以在这里选择。
那么下次就一路走好吧!安装后,当您右键单击计算机上的文件夹时,您会收到以下消息:这说明安装成功了。
然后您还可以:
这也意味着“没关系!”另一点是安装后一切都是英文的。其实可以安装简体中文,不过我觉得还是用英文比较好。事实上,如果有英文,就不要用中文。我们是高级程序员。
安装完成后,启动看看如何使用吧!准备工作已经完成,我们来看看如何使用吧!
SVN集中管理是什么意思呢?也就是说SVN有一个服务中心。完整的代码可以在这个服务中心找到。然后,其他计算机上的客户端可以链接到该中心并从中检索代码。提交你的代码和代码并画出这样的图:
所以一般当你使用svn进行协作开发时,你有一个中心服务代码。你不需要关注这个。您需要做的就是在计算机上安装svn 客户端。该方法已经在上面进行了说明。已安装。
您可能想知道该服务中心位于哪里。这通常是一个svn 服务器,您还需要设置它。可以本地或远程设置。通常,公司远程使用它,每个人都一起使用它。如果你有兴趣做什么,我可以写一篇单独的文章来解释如何设置svn 服务器。
开始提取代码(第一个重要点)。所有准备工作都已完成。我也在本地安装了svn客户端。这时就会有人给你提供你的svn服务器的项目地址(比如本地搭建的svn)。让我尝试。服务器地址作为示例显示。它将如下。
例如,如果让你参与simplejava项目的开发,此时会给你一个地址。
https://LAPTOP-GO8995UD:8443/svn/SVNdemo-ithuangqing/simplejava
接下来,您将被分配一个用户名和密码。
用户名: 用户1 密码: 用户1
一旦有了这些,就拉取代码。首先,考虑要将提取的代码放在哪里。例如,在桌面上创建一个名为“Projects”的新文件夹。
然后打开这个文件夹,右键点击,你会看到这个,点击这个。
单击后,将出现以下窗口。
这意味着你需要连接到svn服务中心,但你不能随便这样做。需要用户名和密码。这是给定的。让我们输入它。注意这里的左下角。请确保您记住您的密码。
这样提取成功了,但是我看提取的代码,服务中心的项目名为simplejava。其实我也想提取这个simplejava。如何管理项目中所有这些提取的文件?
你实际上可以这样做:
当您单击“选择项目”时,将显示您要检索的项目的内容,但此时您可以删除该项目的名称。
这样您就可以获得更广泛的视图,选择要拉动的项目,然后单击“确定”将其拉下。
这是一个权限问题,但是真的可以吗?答案是实际上可能不可能。例如,让我们再试一次:
好吧,这很好。我们来看看之前的水平。
呼,不对,这是怎么回事?其实,很容易理解。我不能说我想看到完整的代码。你做什么并不重要。您的重点不在您正在运行的项目上。没有任何。这里有许可。请在您的服务中心检查这些内容。
这里的每个文件夹其实都可以分配权限。这意味着当您参与开发时,会为您创建一个帐户,并且该帐户具有读写权限,因此您可以看到一些东西,也可以看到一些看不到的东西。
所以当你拿到账号和地址后,有时候会遇到无法获取code的问题,而当你询问权限是否开放时,实际上可能没有。我遇到过这样的事情。
这里不解释如何设置权限,因为它需要svn服务器的知识,所以我会在设置svn服务器时讲它们!
“看不到怎么办?很简单,先在本地创建一个项目文件夹,比如你要拉取simplejava,就先创建一个项目文件夹,然后再拉取,也是这样。” :
现在,让我们编写代码并发送它。完成上述准备工作后,我们就开始编写代码了。现在打开您检索到的代码:
可以看到只有一个Java类。让我们改变它。
publicclassTest1{publicstaticvoidmain(String[]args){System.out.println('欢迎学习svn!');System.out.println('大家好,我是user1');}}好吧,好吧,我做到了。我还编写了代码并检查了更改。
我在这里看到一个红色感叹号,这是一个错误吗?实际上,不,这意味着代码已更改。毕竟,我添加了新代码。接下来,提交新添加的代码。你可以这样做:
右键单击需要发送的文件,单击“提交”,会出现以下框。
检查它是否再次变绿。
添加新的就可以了。由于这是我的第一篇文章,我感到很有成就感。让我们来看看。假设您要添加一个新的Java 类。现在我们来写这个类:
在这里我们将创建一个新的User 类。事实上,当它被svn管理时,相应的表示就会出现在文件中。例如,常规Java 文件显示绿色复选标记,但在某些情况下这可能会导致问题。例如,新添加的文件会标有蓝色问号。粗略的识别是(对于Java 文件)
请注意,新添加的文件是未知文件,必须添加到存储库中。
添加后就会被识别。
它有一个蓝色+ 符号,因此您可以发送它。
提交流程同上
我想删除该文件。有时您可能需要删除文件,例如删除刚刚创建的用户。你可以这样做:
删除后突然后悔怎么办?用力按键盘上的Ctrl+Z 似乎没有任何效果。您需要执行以下操作:
点击空白处,但如果确实要删除,即使按照上述步骤删除,服务中心中的文件仍然不会被删除。您需要发送它,所以点击空白处。然后选择“发送”。
这次删除成功了!
为什么我不能发送?(更新代码)我们使用svn进行协作开发。这意味着您不是唯一一个编写这些代码的人,其他人也在编写它们。例如,其他人将Test1 更改为:
publicclassTest1{publicstaticvoidmain(String[]args){System.out.println('欢迎学习svn!');System.out.println('大家好,我是user1');System.out.println('喊一声! 我是用户ithuangqing');}} 看,这是另一个人添加的新代码。现在,当我再次查看我的代码时,它仍然是这样的:
publicclassTest1{publicstaticvoidmain(String[]args){System.out.println('欢迎学习svn!');System.out.println('大家好,我是用户user1');}} 例如:从更改此代码:
publicclassTest1{publicstaticvoidmain(String[]args){System.out.println('欢迎学习svn!');System.out.println('大家好,我是用户user1,我每天都在努力学习,不断进步。请!') ;}} 然后你也开始发送,明白吗?
我去报告错误。我该怎么办?现在,先把这句话翻译成英文。
你知道发生了什么吗?服务器上的代码刚刚改变了。您在这里看到的内容不是最新的。需要更新,所以请更新。
接下来,检查更新后的代码。
publicclassTest1{publicstaticvoidmain(String[]args){System.out.println('欢迎学习svn!');System.out.println('大家好,我是用户user1,我每天都在努力学习,不断进步。请!') ;System.out .println('嘿,我是ithuangqing用户');}} 检查是否有ithuangqing用户添加的代码并提交。这次保证成功。
那么什么是冲突呢?协作开发中总会遇到的问题之一就是冲突。一般来说,这意味着您和其他人在同一位置更改了代码。让我们举个例子:
首先,其他人改变了这行代码。
publicclassTest1{publicstaticvoidmain(String[]args){System.out.println('欢迎学习svn!');System.out.println('大家好,我是用户user1,我每天都在努力学习,不断进步。拜托!--别学了,我学不会,哈哈');System.out.println('大声喊出来,我是ithuangqing用户');}} 然后我还改了下面这行代码:
publicclassTest1{publicstaticvoidmain(String[]args){System.out.println('欢迎学习svn!');System.out.println('大家好,我是用户user1,我每天都在努力学习,不断进步。拜托!难'); System.out.println('你好,我是用户ithuangqing');}} 这里需要理解一下,即上面的人修改了这段代码并提交了。如果直接更改代码然后开始发送,会发现如下错误:
这个问题之前已经提到过,我来更新一下。
这就产生了冲突,其实很容易理解。我们都更改了这段代码。别人的代码已发送给您,因此您更新它。这相当于在服务器上拉下了这行代码。您会发现以下内容:那么,总而言之,谁做出了正确的更改?我应该保留哪些?
此时,您需要解决冲突。此时您可以检查该文件。
这是什么?这是因为冲突已经发生并且需要解决。怎么解决的呢,我们打开源文件看一下。
此时,您必须处理留下哪些代码。这个应该和其他人讨论一下,看看问题出在哪里。让我们看一下保留哪些代码的最终决定。例如:最后,你自己的修改是正确的,所以删除这些。
然后它会看起来像这样:
接下来,检查这些文件。
冲突还没有解决吗?是的,我解决了冲突,但是我没有通知svn。我们需要通知svn 冲突已经解决。运行这个:
然后这个:
单击“确定”即可完全解决冲突。
冲突解决后,您可以照常提交更改。 (上次提交失败,只好更新,更新遇到了冲突,冲突解决后,重新提交就可以了)
在以后的开发中显示日志时需要小心。还可以在这个svn中查看日志。例如,您可以查看此类的日志。
在这里您可以看到您和其他人对此文件所做的一些更改。
需要注意的是版本回滚。尽管这是一个常用的功能,但一开始可能会有点混乱。比如写代码的时候,后来发现自己写的代码有问题,结果提交了,别人拉取了。你的代码一定有问题。有什么解决办法吗?目前,您可以使用版本回滚来查看它是如何工作的。
例如,您需要编写这样的函数:
然后我们也提交了,怎么修复的,我后悔了,我能不能回到过去,当有人更新代码时,它更新到我的错误代码。
然后当有人更新它时,它看起来像这样:
这真是一记耳光,不,你应该删除你自己的错误代码。要了解如何执行此操作(即进行版本回滚),请参阅:
然后选择您要回滚到的版本。
然后,如果您再次查看,您会发现之前的错误代码已经消失。
注意,注意,注意!如果您编写并提交了错误的代码,其他人的更新将反映在您的代码中。然而,目前,您可能是唯一知道这段代码有问题的人,因此您可能想要重写它。如上所述,如果回滚版本,之前的错误代码就会消失,你可以重写它,但如果其他人现在更新,他们仍然会得到之前的错误代码。
因此,目前,SVN服务器上发送的错误代码必须提交并恢复到原始版本。回滚后不要忘记提交。
如果回滚后不提交并继续编写正确的代码,最终会遇到不同的情况(如果不提交,则不会发生实际回滚;本地会发生回滚,但远程服务器会发生回滚)不会)。不会)。您已输入正确的代码创建并提交代码后,系统将要求您更新。更新它会与之前的错误代码发生冲突。这个时候,解决冲突,留下正确的代码,这样别人再次更新的时候,就能得到正确的代码。
对于上面这种回滚导致的错误,是否有更好的办法使用这种回滚方式呢?
在实际测试中,看起来像是在回滚后编写了新代码而没有提交。提交后会要求更新,更新会冲突。但是,当我使用此方法回滚时,我得到:
即时回滚后,您可以在不提交的情况下编写新的、正确的代码,并通过再次提交来完成提交。不会像上面那样提示更新,而且更新会产生冲突。
我们已经对为什么会出现这种情况做了详细的研究,并将根据需要继续分享。
综上所述,关于如何使用svn,对于刚入职、第一次使用svn的朋友来说已经足够了,主要是了解操作概念,熟悉更新和发送。写代码之前更新一下,避免冲突,还有一个是实际使用过程中出现新问题的时候再去查资料,或者让别人解决,很快就是积累经验了。
感谢您的阅读
来源:公众号| Beyondcoding
推荐阅读:我花了6 个月准备Google 和Facebook 面试