代码之家  ›  专栏  ›  技术社区  ›  Adam Kiss

源代码管理-如果,为什么,如何开始?[复制品]

  •  10
  • Adam Kiss  · 技术社区  · 15 年前

    可能重复:
    Using Source Control

    所以,即使在StackOverflow上,在版本控制上也有很多东西,但我还是找不到好的东西来回答我所有的问题。如果你有什么话要说或发布链接,请在这里做。

    1.我需要从版本控制开始吗?

    虽然大多数人都同意,即使是单个开发人员/程序员也应该从版本控制开始,但没有人(或至少以可理解的形式)告诉我们

    2、如何?

    在我的天性中,我需要知道什么是cvs、svn、tortoise、git、github以及它们之间的区别,但是我很难找到一些死的简单的版本控制世界的起点。

    作为开发人员/程序员,我几乎每一个编程/标记语言(主要是从PASCAL到Java,从HTML到PHP:)都工作或研究过,并且使用了几十个编辑器、IDE和程序。当有人提到你可以使用源代码管理甚至写东西-家庭作业为学生,年度报告,书籍…你必须包括更多的编辑…

    到目前为止,我还不知道如何从版本控制开始,如何将它合并到我的工作流中,如果我需要服务器或者什么。

    感谢您帮助我们找到解决问题的方法和方法:)

    编辑: 从你所有的回答中(谢谢),我觉得这只是“与历史同步的文件夹”。(最明显的方式是:)如果是,你能回答两个问题吗?(编号4)。第五,所以不会混淆答案。)

    4.如果我决定完全改变我的程序的结构(例如,在flex中,我决定使用两个as3类来代替mxml组件),会不会造成混乱?

    5.从其他问题来看,我该如何承诺?(发现此问题已贴出,可能已回答,但再次丢失)

    编辑2: 再一次,更多的答案(谢谢)

    6.我的问题4更像是,如果我不小心(或不小心)更新了一些已删除的文件(这可能是可能的),它会破坏我的程序,因为例如它依赖于其他已删除的文件,而这些文件不是未删除的,我能得到它吗?D

    7.我看到了一些我会看到的样子。谢谢你的回答…然而,现在我很困惑,我该给谁“好答案”,因为你们都很乐于助人:)

    下一步,我会(对于任何一个寻找我的人,我在这个问题上寻找和绊倒的人):

    读取此堆栈溢出:

    观看此视频:

    http://excess.org/article/2008/07/ogre-git-tutorial/

    在从手册中了解基础知识的同时,我把范围缩小到了Subversion(+Tortoissesvn)和Git(Hub),它们是最常用和最受欢迎的。我现在对Github唯一的问题是,私有存储库是付费的,所以我要么寻找不同的Git解决方案,要么寻找更多的颠覆。

    大谢谢大家,我对最有帮助的答案投了赞成票,也谢谢大家的评论。 亚当

    编辑:尝试了mercurial,但发现它不适合我的工作流程…现在尝试颠覆,所以我标记了最古老的颠覆答案:)

    16 回复  |  直到 8 年前
        1
  •  3
  •   Wim    15 年前
    1. 是的,当然。
    2. 从Subversion和Tortoissesvn客户机开始。它有很好的支持,很好的工具,而且通常比Git更难配置和使用。

    有一个很好的 Subversion manual 免费提供。

        2
  •  17
  •   Skilldrick    15 年前

    我要和现在的谷物做对比,说和吉特一起去。这是我做的,而不是学习SVN。读完 git book .

    一旦你掌握了它的窍门,就可以很容易地使用它。要在当前目录中启动新的存储库吗?

    git init
    

    想用一个简短的提交消息提交所有内容吗?

    git commit -am 'My commit message here'
    

    这真的不是火箭科学,就像有些人相信的那样。

    对于一个单独的开发人员来说,这非常简单。您不必为单独的回购费心,回购在您的工作目录中。

    编辑: 您还询问了有关Github的信息。他们有非常白痴的入门指南。当您注册一个帐户并添加一个新的存储库时,它们会提供将其与本地repo同步所需的确切命令。这是使用命令行的另一个好理由。

    为什么要使用Github?如果你的电脑坏了,云里就有一份拷贝。如果你想和朋友合作,给他们发送一个链接,他们可以直接从Github-V.

    编辑2:

    4:这不会造成任何问题。

    5:我不能代表SVN说话,但从我听到的每一件事来看,因为Git使提交变得非常容易,所以您可以更频繁地提交,这使您对自己的历史有更细致的控制。所以,假设你犯了一个巨大的错误,破坏了一切,一周前你犯了一个错误,你可以查看你的Git日志,找出发生变化的地方并修复它。至于实际频率,我承诺大约每半小时一次(每半小时一次 pomodoro 是的),但是如果发生了很多变化,可能更频繁。

        3
  •  14
  •   High Performance Mark    15 年前
    1. 是的,您需要有版本控制。

    2. 我建议您在PC上安装Subversion(无论您安装了什么O/S)。如果您在Windows上工作,还可以使用Tortoissesvn,它是进行Subversion的最佳客户端。Subversion服务器在PC上运行正常。

    3. 下载并阅读Subversion手册。前面的一章回答了你的许多问题,并不是所有的问题都偏向于颠覆。

    是的,还有其他的VC系统可用,但是对于单独的学习者,我完全推荐Subversion+Tortoissesvn。

    高温高压

    作记号

        4
  •  3
  •   Paddy    15 年前

    回答您的编辑,第4点和第5点(注意我的投票是支持Git的——我们在这里使用它(多用户Windows环境),它确实非常有效:

    4、 如果我决定完全改变我的程序结构呢?

    大多数版本控制系统都能处理这个问题。在一天结束的时候,当您提交更改时,您会保存一个版本,说明您的文件在某个特定时间点的外观,这应该是编译代码所需的全部内容。

    您的版本控制系统只是一种在某个时间点对文件进行快照的“简单”方法。

    5、 从其他问题来看,我该如何承诺?

    尽可能频繁地。或者换一种说法,如果你改变了某件事情(或者更重要的是,不小心删除了某件事情或者做了一些非常愚蠢的事情),你会有一种紧握着球的感觉,那就是你刚刚损失了几个小时的相对不相关的工作,而这些工作本来是可以完成的(并且是可以保存的),那么你就没有经常完成。

        5
  •  2
  •   Community CDub    8 年前

    关于源代码管理,您可能想看看这个 "How to use SVN, Branch? Tag? Trunk?" .

    关于使用某种源代码管理,对代码和文档进行修订以恢复软件开发总是很好的。可能值得一看Git。

        6
  •  2
  •   Ikke    15 年前

    对于新问题:

    4:重组应用程序不会有问题。他们只看到一些文件被删除,其他文件被添加。

    5:随你的喜好。你越经常犯错误,就越容易修复小错误。

        7
  •  2
  •   McBeth    15 年前

    在唯一的爱好方面,源代码管理为我解决了三个问题。

    1. 硬件/软件/Wetware故障时的备份
    2. 不同机器(笔记本电脑、台式机、朋友的电脑)之间的轻松同步
    3. 但对我来说,改变游戏规则的是Git对分支的强大支持。

    让我进一步讨论1。除了无法控制的失败案例之外,我可以进行投机开发,如果投机失败,回到稳定的基础是很容易的。

    让我在3上扩展一下。我总是有一个相当大的功能列表,我想添加到我正在编写的软件中。我为要添加的功能创建了一个分支,并可以对其进行一段时间的工作。如果以后,我觉得我想在一个不同的特性上工作,我可以回到一个工作的基础上,在另一个特性上工作一段时间。当我对任何/所有的变更感到满意时,将它们合并起来就很容易了。

    我在开发中使用了sourcesafe、clearcase、cvs、svn、sccs、rcs和git,对我来说,在业余爱好编程中经常使用版本控制的工具是git。它不仅挡住了我的路,而且使上面提到的任务更加容易。

        8
  •  2
  •   Vadim Kotov First Zero    8 年前

    其他的答案都是很到位的。不过,我还提到了源代码管理有两种不同的“样式”:
    1)集中式=您将代码存储在服务器中,尽管这可能是您的本地计算机(如cvs、svn)
    2)distributed=将代码存储在本地数据库中(例如git、mercurial)

    SVN基本上是一个标准的集中式源代码控制程序,尽管您需要设置它的服务器才能使用它。不太难,但是你可以尝试像这样的分布式系统 Mercurial 多走一步。

        9
  •  1
  •   dball917    15 年前

    是否使用源代码管理的决定实际上取决于您的需要。对于单个开发人员类型的环境和小型项目,您可能只是将其用于版本控制;使您可以对代码进行更改,而不必担心丢失已经完成的工作。这听起来像是您所处的位置,所以我不会被卷入源代码管理的各个方面。如果您不关心保留这些版本,并且愿意冒丢失东西的风险,那么源代码管理可能是您不需要的开销。

    这里的大多数人都会说颠覆(SVN)是一种方式,他们可能是对的。不一定是因为它是最好的工具,而是因为它是免费的,并且相当容易理解和使用。它也被开源社区广泛接受,这意味着网络上有很多关于它的信息。Tortoissevn甚至主要通过Windows中的上下文(右键单击)菜单工作,因此您可以避免任何其他“编辑器”。

        10
  •  1
  •   Stephen Roantree    15 年前

    你说你在寻找一个“非常简单的启动”,在这种情况下,我会推荐git。安装工具后

    git init
    

    初始化当前目录中的存储库。

    git add yourfiles
    

    添加要控制的文件,以及

    git commit -ma "commit message"
    

    提交更改。

    这个 Github Guides 是大多数平台上开始使用Git的优秀资源,包含许多有用的链接。

        11
  •  1
  •   Andreas Brinck    15 年前

    即使作为一个开发人员,使用某种形式的版本控制也有很多好处。对我来说,最重要的原因是,如果你把源代码弄乱了(例如,如果你做了大量的编辑,你的程序停止工作),你可以恢复到以前的工作版本。所以在第一个问题上,我会说:“当然!”.

    例如,如果您在使代码开放源代码方面没有任何问题,那么有许多站点可以免费承载您的项目。 google sourceforge . 否则,您可以在自己的计算机上运行Subversion、CVS等服务器。

    对于工作流,大多数版本控制软件(VCS)的工作方式如下:

    • 将VCS指向包含源文件的磁盘上的文件树,并要求它在服务器上创建一个存储库(设置VCS时,只需执行一次此操作)。
    • 在文件树中编辑一些文件
    • 您将通知VCS您要发送到服务器的文件树中有更改。这通常可以通过命令行或某种GUI来完成。这种操作通常被称为 犯罪 .
    • 服务器保存对每个文件所做的所有更改的记录。

    对于问题4:大多数VCS都支持移动/重命名文件,这也将进入历史记录,因此这不会导致任何混乱。

    问题5:尽可能频繁。在工作中,我承诺一旦我做了任何我已经确认有效的改变。在多用户场景中,破坏构建被认为是一个主要的罪过,即提交一个非编译/非工作版本,因为这会导致其他开发人员在更新他们的代码时尖叫停止。如果你是唯一的开发者,我想你可以稍微放松一点。

        12
  •  1
  •   Noufal Ibrahim    15 年前

    版本控制(工具和实践)是每个严肃的程序员都应该知道的。我建议您学习一些基本的系统,并尽早熟悉这些想法。

    版本控制系统有各种不同的风格。你可能会遇到一些术语,如集中、分散、局部等等,这些术语可能会让没有经验的人感到困惑。任何版本控制系统上最优秀的书籍 Subversion book 对于颠覆和 Pro git book 例如,对于Git)将向您介绍版本控制本身(与它们所涉及的实际工具不同)。我也推荐 Wikipedia page this page 简单介绍一下。

    完成后,拿起一个系统。有许多选择,但他们的哲学是不同的。SVN、CVS等都集中在一起,并且已经失去了一些新的基础,比如Git和Mercurial。我建议您首先尝试使用Subversion(因为它仍然被广泛使用,而且技能也很有用),然后再使用任何分布式的(我个人最喜欢的是Git)。

    学习的最后一步只有实践和经验,而不是读书。祝你好运。:)

        13
  •  1
  •   Kevin Jones    15 年前

    为什么?我自己做了很多工作,在商业上,如果没有源代码控制,我永远也不会启动一个半严肃的项目。多年来,我失去了太多的演示(我做了很多教学)和其他我认为源代码控制安全网至关重要的代码。我还运行多台机器(至少一台笔记本和一台桌面),这意味着我可以从多个位置执行提交和签出。

    怎样?对于我的设置,我在运行Windows的Apache上托管了Subversion。这是在Linux上的,但我移动它是出于各种非技术原因。它在一个VMware虚拟机中运行。我不确定,但如果有一个VMware设备可以解决这个问题,我不会感到惊讶-我很确定有一个适用于Apache的VMware设备。这个设置很简单,除了在版本控制中添加一个新项目外,基本上不需要任何管理。我的服务器暴露在外部世界中,所以我可以从任何地方访问它,如果需要,您可以在家庭网络上使用服务器。

    就像我说的,我使用颠覆。我也在服务器上安装了Git,但还没有切换到Git,部分原因是我的惰性,部分原因是工具。今天我主要在.NET和Visual Studio中使用Windows,所以我喜欢集成到Visual Studio中的工具,而不是讨厌运行命令行工具,如果集成了这些工具,就更容易了。

    至于改变程序结构——在这种情况下版本控制的主要优点是,如果你搞砸了,你可以再回去。您甚至可以通过分支您当前的开发主线来尝试一些东西,并放弃那些不起作用的更改。如果我正在尝试一个主要的重新构造,我可能会对代码库进行分支,重新构造以使一切正常工作,然后将该分支移到“trunk”(用SVN术语)上。你不必那样做,但它给了你一个安全网。

    我应该承诺多久?这要看情况!对于代码,可能是在一个工作单元上(可能只是添加一个测试,也可能是添加一个特性),签入的代码应该始终构建。对于文档,频率较低。您也可能有关于这方面的公司策略,以及一些机制,例如搁置(在VST中),您可以在不签入的情况下将代码存储在存储库中。记住,存储库在那里是为了a)保护代码安全b)保存代码的最新副本,c)允许共享代码。为了满足b)和c)的要求,代码应该是可构建的并通过所有测试,所以不要随意签入代码。

    希望这有帮助

        14
  •  1
  •   gath    15 年前

    对!对!请从Git开始。

    我是一个有尝试新事物/方法到已经稳定的应用程序的习惯的开发人员。在我遇到Git之前,我一直把我当前的稳定项目复制到一个文件夹,一个日期戳,这个文件夹只是为了记住我在哪里,哪个是稳定版本,然后我开始玩弄代码。

    但是使用Git,我可以尝试新的代码技巧,我所做的只是从我的主(主稳定应用程序)分支进行尝试,如果我尝试的失败,我只需丢弃分支并快速切换回我的主,它仍然是完整、安全和稳定的。如果我成功了(大多数时候都不是),我就把分支合并到主节点上,然后丢弃分支。多好啊!

    在吉特的分支是什么让我头朝后倒。试试看

        15
  •  0
  •   kubi    15 年前
    1. 最好从版本控制开始。除了极少数例外,每个软件企业都将使用某种形式的版本控制,所以您拥有的经验越多,效果越好。另外,源代码管理只是一个好主意,我几乎把它用于我所做的所有事情。例句:每次我把简历发给一个潜在的雇主,我都会给那个版本加上标签。现在我有了一个永久性的快照什么样的简历在任何给定的时间。

    2. 如何:如何取决于你决定使用什么系统。我将在讨论中加上我的2美分,并投票给Git。一旦安装了Git,就可以进行分支、提交和创建存储库;这些操作都非常简单和快速。对于孤单的开发人员来说,缺少中央存储库也使得设置变得更加容易。不过,我不同意那些说学习Git很容易的人。有些命令非常深奥,您可能永远无法避免频繁浏览文档。( git push origin :some-branch 有人吗?)

    3. 您没有问题,因此我提供了一个链接: http://gitready.com/

    4. 完全改变程序的结构完全没有问题。在您进行更改之前提交,在您进行更改之后再次提交,如果您把事情搞砸了,您将能够回滚所有内容。使用Git的另一个好处是Git可以跨多个文件跟踪文本。例如,如果Alice在文件中写入20行代码 A.m Bob将这20行代码移动到文件中 B.m ,git将允许您将该代码的源代码跟踪回Alice。

    5. 我不断地承诺,几乎我所做的每一个更改都会得到承诺和描述。不要忘记提交消息!除了时间戳之外,拥有100个提交列表对您几乎没有好处。当我进行大量的GUI调整和/或重构时,我会经常花更多的时间编写提交消息,然后编写代码…但是有一次两个字符的编辑17提交打破了我的测试用例,我会很高兴我的提交是如此的自由和冗长。

    6. 对。有时需要付出一些努力来解决问题,但是如果你稍微小心一点,你的数据很少会永远消失。

    7. 如果没人要,我就要。;-)

        16
  •  0
  •   Jürgen A. Erhard    15 年前

    我必须加上我对反复无常的投票。不能把焦点都留给吉特。;-)

    但不管你最终选择什么, 开始使用一个。坦率地说,你使用了所有这些语言/工具,而且从未开始使用 任何 风险投资公司。我,当我了解到它的时候,我就开始了RCS(回到古老的阿米加1000,没有硬盘,只有176KB的软盘)。无法想象 使用某种类型的VCS。实际上,我仍然使用rcs,用于不需要任何花哨内容的单个文件。