可能重复:
Using Source Control
所以,虽然即使在stackoverflow这里实际上在版本控制方面还有很多东西,但我找不到能回答我所有问题的好东西。如果您有任何发言或发布链接,请在此处进行。
1.我需要从版本控制开始吗?
虽然大多数人都同意,即使是单个开发人员/程序员也应该从版本控制开始,没有人(或者至少是可理解的形式)告诉
2.,怎么样?
在我的本性中,我需要知道CVS,SVN,Tortoise,Git,GitHub是什么意思,有什么不同,但我很难找到一些简单的启动版本控制世界。
作为开发人员/程序员,我工作或研究了几乎所有的编程/标记语言,这是主要的(从pascal到java,从html到php :))并使用了许多编辑器,IDE和程序。当有人提到你甚至可以使用源代码控制来写东西 - 为学生做家庭作业,年度报告,书籍......你必须包括更多的编辑......
我现在已经不知道如何从版本控制开始,如何将它合并到我的工作流程中,如果我需要服务器或什么。
感谢您帮助我找到了什么以及如何处理它:)
修改 从你的所有答案(谢谢),我感觉它真的只有像“有历史的同步文件夹”之类的东西。 (以最明显的方式:))如果是的话,你能回答两个问题吗? (编号为4.和5.,所以它不会在答案中混淆:))
4.如果我决定彻底改变我的程序结构怎么办(例如,在flex中,我决定使用两个as3类而不是MXML组件) - 这会不会造成混淆?
5.,从其他问题来看,我如何投入? (发现这个问题已经发布并且可能已经回答了,但是又失去了它)
编辑2: 再一次,更多答案(谢谢)
6.我的问题4更像是如果我不小心(或不)更新一些已删除的文件(这可能是可能的),它会破坏我的程序,因为例如它取决于其他已删除的文件,这不是取消删除,我能得到吗? :d
7.我看到了一些我会看的方式。谢谢你的回答......但是,现在我很困惑,我应该给谁“好的答案”,因为你们都非常乐于助人:)
接下来,我会(对于任何寻找我正在寻找和绊倒这个问题的人):
阅读此stackoverflows:
观看此视频:
http://excess.org/article/2008/07/ogre-git-tutorial/
在理解手册的基础知识时,我将其缩小为颠覆(+ TortoiseSVN)和git(hub),这是最常用和最受欢迎的。我现在只有github的问题是私有存储库是付费的,所以我要么寻找不同的git解决方案,要么更多地关注Subversion。
非常感谢大家,我提出了最有帮助的答案,也感谢您的评论。 亚当
编辑:试过Mercurial,但发现我的工作流程不行......现在尝试颠覆,所以我标记了最老的颠覆答案:)
答案 0 :(得分:17)
我要反对当前的粮食并说与Git一起去。这就是我所做的,而不是学习SVN。仔细阅读git book的第一位。
一旦掌握了它,它就会非常简单易用。想在当前目录中启动一个新的存储库吗?
git init
想用短提交消息提交所有内容吗?
git commit -am 'My commit message here'
这真的不是火箭科学,因为有些人会相信你。
对于一个单独的开发人员来说,这非常简单。您不必为单独的仓库而烦恼,仓库就在您的工作目录中。
编辑:您还询问了github。他们有真正的白痴入门指南。注册帐户并添加新存储库时,它们会为您提供将其与本地存储库同步所需的确切命令。这是使用命令行的另一个好理由。
为什么要使用github?如果您的计算机爆炸,云中就会有一个副本。如果你想与朋友合作,给他们发一个链接,他们可以直接从github - v。拉。
编辑2:
4:这不会造成任何问题。
5:我不能代表SVN,但是从我听过的所有内容来看,因为git使得它很容易提交,你可以更频繁地提交,这可以让你更精细地控制你的历史。所以,假设你犯了一个大错误,打破了一切,你在一周前做了一些时间,你可以通过你的git日志找出变化发生的地方并修复它。至于实际频率,我每半小时约会一次(实际上每pomodoro一次),但如果发生了很多变化,可能会更频繁。
答案 1 :(得分:14)
是的,您需要进行版本控制。
我建议你在PC上安装Subversion(无论你安装了什么用途)。如果您正在使用Windows也可以获得TortoiseSVN,它是Subversion的最佳客户端。 Subversion服务器在PC上运行正常。
下载并阅读Subversion手册。其中一个章节提供了很多问题的答案,并非所有问题都偏向于Subversion。
是的,还有其他VC系统可用,但对于单独的学习者,我完全推荐Subversion + TortoiseSVN。
HTH
标记
答案 2 :(得分:3)
免费提供优质Subversion manual。
答案 3 :(得分:3)
您的编辑答案,第4点和第5点(注意我的投票是针对GIT的 - 我们在这里使用它(多用户窗口环境)并且它确实非常有效:
4.,如果我决定彻底改变我的程序结构怎么办?
大多数版本控制系统都能够处理这个问题。在一天结束时,当您提交更改时,您会保存一个版本,保存文件在特定时间点的外观,这应该是编译代码所需的全部内容。
您的版本控制系统只是一种“简单”的方式,可以在某个时间点拍摄文件的快照。
5.,从其他问题来看,我该怎么做?
尽可能多的时间。换句话说,如果你改变某些东西(或者更重要的是,不小心删除了某些东西或做了一些非常愚蠢的事情),你就会感觉到你刚刚失去了几小时可能已经犯下的相对无关的工作(并且保存),然后你不经常提交。
答案 4 :(得分:2)
关于源代码管理,您可能需要查看此"How to use SVN, Branch? Tag? Trunk?"。
关于使用某种源代码控制,对代码和文档进行修订以重新进行软件开发总是好的。值得一看GIT。
答案 5 :(得分:2)
其他答案都是现货。但是,我还要提到源控制有两种不同的“风格”:
1)集中=您将代码存储在服务器中,尽管这可能是您的本地机器(例如CVS,SVN)
2)distributed =您将代码存储在本地数据库(例如Git,Mercurial)中
SVN几乎是事实上标准的集中式源代码控制程序,尽管您需要设置其服务器才能使用它。不是太难,但你可以尝试像Mercurial这样的分布式系统来减少额外的步骤。
答案 6 :(得分:2)
对于您的新问题:
4:重组您的应用程序不会有问题。他们只是看到一些文件被删除而其他文件被添加。
5:随心所欲。你犯的次数越多,修复小错误就越容易。
答案 7 :(得分:2)
在孤独的爱好方面,源代码控制为我解决了三个问题。
让我扩展#1。除了无法控制的失败案例外,我还可以进行投机开发,如果/当投机失败回到稳定的基础时很容易。
让我在#3上展开一秒钟。我总是有一个相当大的功能列表,我想添加到我正在编写的软件中。我为我想要添加的功能创建了一个分支,并且可以在其上工作一段时间。如果以后,我觉得有兴趣使用不同的功能,我可以回到工作基地并在其他功能上工作一段时间。当我对任何/所有变化感到满意时,将它们合并在一起很容易。
我在开发中使用过SourceSafe,ClearCase,CVS,SVN,SCCS,RCS和Git,对我来说,让我在爱好编程中定期使用版本控制的工具是Git。它不仅让我失望,而且使上述任务更容易。
答案 8 :(得分:1)
是否使用源代码管理的决定实际上取决于您的需求。对于单个开发人员类型的氛围和小项目,您可能只是将其用于版本控制;使您可以更改代码,而不必担心丢失已经完成的工作。这种声音就像你在哪里,所以我不会在源代码控制的各个方面都被包裹起来。如果你不关心保留这些版本并且愿意冒失去的东西,那么源代码控制可能是你不需要的开销。
这里的大多数人都会说Subversion(SVN)是要走的路,他们可能是对的。不是必需的,因为它是最好的工具,但因为它是免费的,而且相当容易理解和使用。它也被开源社区广泛接受,这意味着网上有很多关于它的信息。 TortoiseSVN甚至主要来自Windows中的上下文(右键单击)菜单,因此您可以避免任何其他“编辑器”。
答案 9 :(得分:1)
即使作为单个开发人员,使用某种形式的版本控制也有很多好处。对我来说,最重要的原因是,如果你搞砸了你的源代码(如果你做了一些大的编辑而你的程序停止工作),你可以恢复到以前的工作版本。所以在第一个问题上我会说:“肯定是!”。
如果您在使代码开源时没有任何问题,那么有许多网站可以免费托管您的项目,例如google和sourceforge。否则,您可以在自己的计算机上运行subversion,cvs等服务器。
至于工作流程,大多数版本控制软件(VCS)的工作方式如下:
对于问题4:大多数VCS都支持移动/重命名文件,这也将进入历史记录,所以这不会导致任何混淆。
对于问题5:尽可能经常。在我工作的时候,我做出任何我已经验证过的工作变更。在多用户场景中,它被认为是打破构建的主要罪,即提交非编译/非工作版本,因为如果更新其代码,这会使其他开发人员停止尖叫。如果你是唯一的开发人员,我认为你可能会有点松懈。
答案 10 :(得分:1)
你说你正在寻找一个“死的简单启动”,在这种情况下我会推荐Git。安装工具后
git init
在当前目录中初始化存储库。
git add yourfiles
添加您要控制的文件,
git commit -ma "commit message"
提交更改。
Github Guides是在大多数平台上开始使用Git的绝佳资源,并且包含许多有用的链接。
答案 11 :(得分:1)
版本控制(工具和实践)是每个认真的程序员都应该知道的。我建议您学习一些基本系统,并尽早熟悉这些想法。
版本控制系统有各种风格。您可能会遇到集中式,分布式,本地等术语,这些术语可能会让那些不熟悉的人感到困惑。关于任何版本控制系统的大多数好书(例如Subversion的Subversion book和git的Pro git book)将为您提供版本控制本身的一些介绍(与他们覆盖的实际工具分开)。我还建议Wikipedia page和this page进行快速介绍。
完成后,选择一个系统。有许多可供选择,但他们的哲学是不同的。 SVN,CVS等是集中的,并且已经失去了像git和mercurial这样的新版本,它们是分布式的。我建议你首先尝试使用subversion(因为它仍然被广泛使用,技能将是有用的)然后任何分布式(我个人最喜欢的是git)。
最后的学习行为只会来自实践和经验,而不是来自读书。祝好运。 :)
答案 12 :(得分:1)
为什么呢?我自己和商业上做了很多工作,我永远不会,在没有源代码控制的情况下永远不会开始一个半严肃的项目。多年来,我已经失去了太多的演示(我做了很多教学)和其他代码,我认为源控制的安全网是至关重要的。我还运行多台机器(至少是一台笔记本电脑和一台台式机),这意味着我可以从多个地点进行提交和结账。
如何?对于我的设置,我在Windows上运行的Apache上托管了subversion。这是在Linux上,但我出于各种非技术原因移动它。它在VMWare虚拟机中运行。我不确定,但如果有一个VMWare设备,我不会感到惊讶 - 我很确定有一个适用于Apache的VMWare设备。设置很简单,除了我想要将新项目添加到版本控制之外,基本上不需要管理。我的服务器暴露在外面,所以我可以从任何地方访问它,如果需要,你可以在家庭网络上安装服务器。
像我说的那样我使用颠覆。我也在服务器上安装了git但没有切换到git,部分原因是我的惯性和部分由于工具。今天我主要在Windows上的.net和Visual Studio工作,所以我喜欢集成到Visual Studio中的工具,而不是我不喜欢运行命令行工具,如果它们被集成,它会更容易。至于更改程序结构 - 在这种情况下版本控制的主要优点是,如果你搞砸了,你可以再回去。你甚至可以尝试一些东西,如果他们不工作就把它们抛弃,例如,分支你当前的主要开发线。如果我正在尝试一个重大的重组,我可能会分支我的代码库,重新构造以使一切正常工作,然后将该分支移到'trunk'上(以svn术语)。你不必这样做,但它给你一个安全网。
我应该多久一次?这取决于!对于代码,可能在一个工作单元(可能只是添加一个测试,或者添加一个功能),代码应始终构建。对于文件,不太频繁。您可能还有关于此的公司策略,以及搁置(在VSTS中)您可以在不登记的情况下将代码存储在存储库中的机制。请记住存储库是为了a)保持代码安全b)保存最新的代码和c)允许共享代码。对于b)和c)要满足,代码应该是可构建的并通过所有测试,所以不要随意检查代码。
希望这有帮助
答案 13 :(得分:1)
是的!是的!请从Git开始。
开发人员习惯于为已经稳定的应用程序尝试新的东西/方法。在我遇到Git之前,我一直将我当前的稳定项目复制到一个文件夹上,在文件夹上记下日期标记,以便记住我在哪里以及哪个是稳定版本,然后我会开始使用代码。
但是使用Git我在我的代码上尝试新技巧没有问题,我所做的只是从我的主人(主要稳定的应用程序)分支做我的尝试,如果我失败了我尝试我只是丢弃分支和快速切换回我的主人,这仍然完好无损,安全稳定。如果成功(大部分时间不是)我只是将分支合并到主人,然后丢弃分支。多好啊。
Git中的分支是让我黯然失色的原因。试试吧
答案 14 :(得分:0)
从版本控制开始是个好主意。除了极少数例外,每个软件企业都会使用某种形式的版本控制,因此您拥有的体验越多越好。另外,源代码控制只是一个好主意,我几乎把它用于我所做的一切。示例:每次我将简历发送给潜在雇主时,我都会标记该版本。现在,我已经获得了任何时间内简历看起来的永久性快照。
如何:如何取决于您决定使用的系统。我将在讨论中加上2美分,并为Git投票。一旦安装了Git,分支,提交,创建存储库;这些东西都非常简单,超级快。对于单独的开发人员来说,缺少中央存储库也使得设置变得更加容易。我不同意那些说学习Git很容易的人。有些命令是如此深奥,你可能永远无法通过频繁浏览文档来放松自己。 (git push origin :some-branch
任何人?)
您没有问题#3,因此我提供了一个链接:http://gitready.com/
完全改变程序结构完全没问题。在进行更改之前提交,在进行更改后再次提交,如果你搞砸了,你将能够回滚所有内容。使用Git的另一个好处是Git将跟踪多个文件中的文本。因此,例如,如果Alice在文件A.m
中写入20行代码并且Bob将这20行代码移动到文件B.m
中,Git将允许您将该代码的源追溯回Alice。
我经常提交,几乎我所做的每一项改变都会得到提交和描述。不要忘记提交消息!拥有100个提交但没有时间戳的列表对你来说几乎没有任何好处。当我进行大量的GUI调整和/或重构时,我会经常花更多的时间编写提交消息,然后我会编写代码...但是有一次2字符编辑17提交以前会破坏我的测试用例,我很高兴我的承诺如此自由和冗长。
是。有时需要付出一些努力来解决问题,但如果你要小心谨慎,那么你的数据很少会消失。
如果没有其他人想要它,我会接受它。 ; - )
答案 15 :(得分:0)
我必须加上我对mercurial的投票。不能把风头全部留给git。 ; - )
但无论你最后选择什么,做都要开始使用一个。我很坦率地说你使用过所有这些语言/工具并且从未使用任何 VCS开始。我,我在了解它的那一刻就开始了RCS(回到古老的Amiga 1000,没有高清,只有176KB的软盘:))。无法想象不使用某种VCS。我实际上仍然使用RCS,对于不需要任何花哨的单个文件。