专业的应用程序开发人员如何使用版本控制系统(如GIT和Subversion)?


9

我是一名初学者开发人员,从一开始我就一直在想,如何使用诸如GIT和Subversion之类的专业工具(我对这些工具没有很好的了解)来满足他们项目的需求。如果他们确实使用它,我将如何设置类似的东西?

我的申请不是很大,我还没有加入团队,这对我有很大帮助吗?

这个网站上有关于如何使用工具的问题,但是我需要初学者的支持。


5
Git和Subversion附带说明。它们基本上是一个以结构化方式存储开发代码的存储库。拥有完整的代码更改记录和强大的备份功能,可使单个开发人员受益。项目团队受益于共享相同源代码存储库的能力,从而使更改在工作站之间保持同步。
罗伯特·哈维

Answers:


13

源代码管理无处不在-甚至有人说如果不使用它,就不能称自己为专业开发人员。即使在单独开发时,源代码控制仍然提供了很多好处。最后,它提供了历史记录和广泛的撤消路径。它还可以让您腾出更多的时间进行更多的实验,并且可以放心,如果您不喜欢新版本,可以随时切换回以前的版本。

也就是说,即使在Subversion或Git之类的源代码控制系统中,工作流也因团队而异。最好的起点可能是选择一个源代码控制系统并熟悉其标准工作流程(在您的头脑中,您将不得不在整个职业生涯中切换工作流程)。

对于入门,我建议使用Git。我是Git迷,但更具体地说,选择Git gets可以让您从无服务器工作开始,仅在对您有意义的情况下设置服务器。另一方面,Subversion需要一台服务器并进行设置,尽管不是很困难,但是当您不熟悉这种事情时,这令人望而生畏。

以下是对源代码控制的一些良好经验法则的总体概述:http : //scottonwriting.net/sowblog/archive/2008/11/13/163320.aspx

独自工作时,您不需要大量的工作流程。提早提交,经常提交。如果您开始推出版本,请标记您的发行版本。创建用于实验或长期分散工作的分支(与Subversion相比,Git使其更便宜,更简单)。


1
好的答案,只有一点。我绝对不会选择需要服务器的Subversion作为它的最大缺点,部分原因是我实际上很少使用它。该存储库可以位于本地目录中,并且设置仅是单个命令。Git和Subversion之间的主要区别在于,像Git这样的分布式系统比像Subversion这样的集中式系统要灵活得多。
Jan Hudec 2012年

5

源代码控制系统(SVN,Git等)处于非常简单的级别,可让您保留文件的更改历史记录。这使您可以查看代码随时间的变化情况,并回滚您可能不需要的更改(例如,更改无法按预期进行,您可以将代码还原为以前的已知状态)。一旦开始使用它,即使您自己开发,也将变得无价之宝。

当您与团队中的其他人一起工作时,由于多个人可以更改同一个文件,因此收益会增加更多,并且如果更改不冲突(例如,两个人更改了文件的不同部分),则更改将被合并自动。如果有任何冲突,那么您将可以在同事旁边看到所做的更改,并与他们讨论如何合并更改。

您还可以在发布代码版本时创建代码库的快照(通常称为标签),以便即使主要源代码仍在使用可能尚未发布的新功能,也可以轻松调试问题。

这里有一些有用的资源:

使用Visual Studio和.NET启动并运行Subversion和Tortoise SVN

带有Subversion的版本控制


1
不提供+1,因为如今当每个人都转向分布式系统时,将Subversion作为第一个系统进行学习会适得其反。
Jan Hudec 2012年

3

初学者教程

有很棒的教程(视频和文本)可以帮助您从一个非常基础的层次开始。对于初学者来说,Git似乎有一种很好的方式来温和地介绍该主题,它会告诉您为什么要先这么做,并使用重复,定义和图形来帮助您记住关键命令的名称和功能。

SVN

SVN打算做更好的CVS。CVS(并发版本系统)一次处理一个文件,而SVN通常一次处理一个目录或目录树。如果您在工作中使用SVN(以及CVS或其他系统),则可能很重要,但我的看法是,我们会大大提高我们对每隔几年执行源代码控制的理解,就像您更喜欢较晚的模型一样在计算机上,您应该选择较新的模型源代码控制工具。更改系统是一笔巨大的投资,并且代码历史记录可能会丢失,尽管对于许多系统而言,都有转换器使您可以迁移代码以及历史记录和要淘汰的系统创建的其他工件。

专业的源代码控制满足专业需求

您的问题“专业人士如何使用GIT和Subversion等工具来满足他们项目的需求?” 与以下问题密切相关:“团队如何一起工作而又不会互相干扰,同时又要尽快工作?”

随着一些开发人员编写其他开发人员将使用的代码,以及各种利益相关者需要不同级别的稳定性与创新,该代码经常更改。源代码控制系统通过存储供团队使用的代码来提供帮助,将每个更改保持在上下文中,版本随时间变化,并且通常还包含分支,这些分支是代码的受控副本,用于将更改组与其他更改组隔离开。

将事情重新组合在一起,合并许多团队成员的工作是一件令人头疼的事,在SVN和较旧的系统中,这些工作非常集中且困难。对于使用Git的团队来说,合并变得更简单,并且更容易受到整个团队(而不是几个专家)的影响。在SVN中,分支可能是个人事务,但合并通常会对团队造成痛苦的影响,并且从获得许可,避免破损的角度来看,将代码移回主行可能是痛苦的,并且需要完成任务的工作量。

通过已建立的源代码控制存储库,专业人员可以满足其他需求,例如从根本原因诊断问题。如果存在曾经使用过的代码版本,并且在当前版本中出现了新发现的问题,则可以在历史记录中前进和后退以查明问题发生的时间。在SVN中,此功能尚不成熟,但在Git中,名为git bisect的命令支持搜索最后一个工作/第一个失败的版本。该问题将由两个版本之间的源更改之一引起,这可能比搜索整个代码库更容易诊断。

很抱歉漫步,希望这对您使用源代码管理有所帮助。


0

我的团队使用自行开发的团队版本控制系统。(遗憾的是,Git似乎还不能在IBM i“本地”源文件上运行)。但是就个人而言,一旦从该系统中获取了源代码,便会在开发过程中使用Git,直到项目完成并将其检入到团队VCS。

正如他们在投票中所说的那样……尽早提交,请经常提交。在开发新功能时,我会做出承诺。我在编译之间进行提交,并且每次尝试在测试和调试期间进行更改时都尝试纠正编译器错误。这样可以简化对主题的多种尝试,并在需要时轻松地退出主题,尤其是当跨多个文件协调更改时。

Git改进了我开发的方式。


“ Git似乎还不能在IBM i“本地”源文件上使用)”-Git应该可以在任何文件上使用。这里有什么问题?
Marnen Laibow-Koser

@ MarnenLaibow-Koser大多数IBM i开发人员正在使用我们称为原生(旧式)文件系统QSYS的源文件,其中源文件具有内置的固定长度格式。每行以6位序列号,6位变更日期开头,然后是源代码文本行。即使一行的源代码未更改,顺序和更改日期也可能会更改。解决方案可能是最近才开发的。IBM和其他公司现在在IBM i上支持git。而且,IBM i上其他IFS文件系统中“常规”流文件中的源也不应该成为问题。
WarrenT '18年

哦,天哪,我隐约记得20年前进行AS / 400开发的那件事。但是,我认为,没有理由说Git无法使用此类文件。您可能需要编写一个合并行号的合并驱动程序,但这应该很容易做到。(我想知道这是否是IBM所做的...)
Marnen Laibow-Koser

但是,如果您删除行号和行更改日期,那么当您从Git中退回某些内容时,就会丢失它们。要说服某些人依靠他们大约3年之后,不再需要这些约会并不容易。是的,我知道Git的责任提供了同样的东西,但是人们不愿放弃他们已经依赖了很长时间的东西,即使这不一定是合乎逻辑的论点。
WarrenT '18年

实际上,您可以对Git进行清除/涂抹过滤器,以从Git责备中恢复日期。:)
Marnen Laibow-Koser '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.