如今,典型的开发是协作式的,因此使用版本控制系统。这意味着大家可能一起开发一个项目,分别编写代码,然后大家可能需要将彼此写的代码拼凑在一起。就是大家一起写一套代码。这需要一个版本控制系统,将每个人编写的代码存储在一个地方。这对应于备份服务器。
Git和SVN是目前主流的版本控制系统,很多公司自然而然地使用SVN,所以在这篇文章中我们将详细介绍SVN的技巧和使用方法。我们总结了你应该知道的用法以及工作中经常使用的用法。
首先我们先来了解一下什么是SVN。以下是来自百度百科的描述:
SVN是Subversion的缩写,是一个开源版本控制系统,允许多人在同一个项目上进行协作,实现资源共享,并通过分支管理系统的高效管理最终实现集中控制。
如果还是不明白,建议百度搜索。 “什么是SVN”在百度百科和维基百科上有详细解释。
要使用SVN,首先要了解如何在Windows 上安装它。比如你想听音乐,就需要安装客户端。当然,您也可以安装QQ音乐或网易云音乐。
SVN也有版本可供选择。这是这个客户的别名,它被称为小乌龟,因为乌龟的意思是乌龟。
知道了。这是非常可以忍受的。我想下载https://tortoisesvn.net/downloads.html。
根据你的电脑情况选择安装即可!
有几件事需要记住。
只需选择这个即可。另外,在上面选择要安装下载的版本后,如果长时间没有下载,请在弹出的页面左下角选择“同意”,然后等待下载。你可以手动点击页面第一行的链接仔细看看,但我不会在这里发布图片,因为我仍然能理解那部分英文。
如果需要使用命令行,可以在这里选择。
然后一路前行!安装后,当您右键单击计算机上的文件夹时,您会收到以下消息:这说明安装成功了。
然后您还可以:
这也意味着“没关系!”另外,虽然安装后一切都是英文,但实际上您也可以使用简体中文。我觉得能用英文的话最好不要用中文。
安装后,启动它并查看如何使用它。 现在准备工作已经完成了,我们来看看如何使用吧。
SVN 是中心化的,这意味着什么?也就是说,SVN 有一个服务中心,其他计算机上的客户端可以链接到该服务中心来获取其代码。提交您的代码并绘制如下图:
所以如果使用svn进行协作开发,则不需要这样做。该方法如上所述。已安装。
您可能想知道该服务中心位于哪里。这通常需要在本地或远程构建,并由每个人一起使用。如果你有兴趣,我可以写另一篇文章解释如何设置svn 服务器。
开始提取代码(第一个重要点)。现在您已经在本地安装了svn 客户端。此时你会得到你本地搭建的svn服务器的项目地址。服务器地址作为示例显示。
例如,如果让你参与simplejava项目的开发,此时会给你一个地址。
https://LAPTOP-GO8995UD:8443/svn/SVNdemo-ithuangqing/simplejava
接下来,您将被分配一个用户名和密码。
用户名: 用户1 密码: 用户1
一旦有了这些,就拉取代码。首先,考虑要将提取的代码放在哪里。例如,在桌面上创建一个名为“Projects”的新文件夹。
然后打开这个文件夹,右键点击,你会看到这个,点击这个。
单击后,将出现以下窗口。
这意味着你需要连接到svn服务中心。但是,需要用户名和密码。现在请注意左下角。请确保您记住您的密码。
这样就提取成功了,但是我看提取的代码,我们服务中心的项目叫simplejava。这样,所有提取的文件都是simplejava.xml。您在项目中如何管理它?
你实际上可以这样做:
单击“选择项目”以显示您要检索的项目的内容。此时您可以删除该项目的名称。这看起来像这样:
这样你就可以看到更广泛的方面,选择你想要拉的项目,单击“确定”将它们拉下来,就完成了。
这是一个权限问题,但是真的可以吗?答案实际上可能是不可能的。例如,让我们再试一次。
好吧,这很好。我们来看看之前的水平。
不,实际上,您不必为您正在做的项目支付全价。由于没有,请到服务中心确认。
这里的每个文件夹其实都可以分配权限。这意味着当您参与开发时会创建一个帐户,但该帐户具有读写权限,其中一些权限您无法查看。
因此,在您获得帐户和地址后,您可能会遇到问题而无法获得代码。如果是这样,请确保权限未打开。我遇到了这个。
这里我不会解释如何设置权限等,因为这是关于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('你好,我是用户ithuaqing');}} 这里需要理解一下。换句话说,你不是上面的人修改并提交这段代码的人。一开始,当我直接修改代码然后开始发送时,发现出现以下错误:
我之前已经提到过这个问题,所以让我更新一下结果。
这会产生冲突,但这很容易理解。这与更新已发送给其他人的代码相同。你也改了,都完了,谁改的对呢?我应该保留哪一个?
此时,您需要解决冲突。此时您可以检查该文件。
这是什么?这是因为冲突已经发生并且需要解决。我们打开源文件看一下。
此时,您应该与其他人讨论保留哪些代码,并最终决定保留哪些代码。毕竟,您自己的更改是正确的,因此删除这些内容。
然后它会看起来像这样:
接下来,检查这些文件。
冲突还没有解决吗?是的,冲突解决了,但是我没有通知svn冲突解决了。做这个:
然后这个:
单击“确定”即可完全解决冲突。
冲突解决后,您可以照常提交更改。 (上次提交失败,只好更新,更新遇到冲突,冲突解决后,再次提交就可以了)
以后开发查看日志要小心。例如,此svn 还允许您查看以下类的日志:
在这里您可以看到您和其他人对此文件所做的一些更改。
版本回滚是一个常用的功能,但一开始可能会有点混乱,例如,如果您正在编写代码,后来发现您提交的代码有问题。别人拉的。你的代码一定有问题。目前,您可以使用版本回滚来检查行为。
例如,您需要编写这样的函数:
事后,我们对如何修复它感到后悔。当有人更新代码时,它会更新如下:
然后当有人更新它时,它看起来像这样:
这很糟糕。不可以,您必须自行删除错误代码。你必须这样做,即回滚版本。请参考以下内容。
然后选择您要回滚到的版本。
然后,如果您再次查看,您会发现之前的错误代码已经消失。
注意,注意,注意!如果您编写并提交了错误的代码,其他人的更新将反映在您的代码中。但目前,您可能是唯一知道这段代码有问题的人。我想重写它。如上所述,如果回滚版本,之前的错误代码就会消失,你可以重写它,但如果其他人现在更新,他们仍然会得到之前的错误代码。
因此,请注意,目前您必须提交SVN服务器上发送的错误代码才能将其恢复到原始版本。
如果回滚后不提交并继续编写正确的代码,最终会遇到不同的情况(如果不提交,此时不会发生实际回滚;会发生本地回滚,但远程回滚)服务器不执行)。输入正确的代码。创建并提交代码后,系统将提示您更新它。更新它会与之前的错误代码发生冲突。此时您需要解决冲突并留下正确的代码。提交,然后等对方再次更新时获取正确的代码。
针对上述回滚导致的错误,是否有更好的办法使用这种回滚方式呢?
实际测试中,回滚后似乎没有提交就写了新代码,但是使用这种方法回滚时,更新会发生冲突。
立即回滚后,您可以在不提交的情况下编写新的正确代码,并通过再次提交来完成提交。不会像上面那样提示您更新,并且更新会发生冲突。
我们已经对为什么会出现这种情况进行了详细研究,并将继续酌情分享。
综上所述,说到使用svn,如果你是新进公司,第一次使用svn,主要只需要了解几个操作概念,熟悉更新和提交即可。请在编写代码之前更新以避免冲突。更重要的是,当实际使用过程中出现新问题时,可以通过查看资料或请教他人解决来快速积累经验。
感谢您的阅读
来源:公众号| 超越编码
推荐阅读:我花了6 个月准备Google 和Facebook 面试