Svn 版本控制把我难住了

Svn 版本控制把我难住了,svn,git,version-control,Svn,Git,Version Control,我开发网站已经有几年了,我从来没有时间和精力去学习版本控制。现在,当我开始我曾经开发过的一个更大的项目时,我正在考虑最后一次冒险,并利用这个机会来学习版本控制 我已经阅读了一些简短的描述,但是我仍然在理解集中式版本控制和分散式版本控制的概念上有一些困难。有什么区别?优点/缺点 我正在OS X上开发网站。在过去的几年里,我使用了一个名为的程序来编辑我的HTML/PHP/CSS/JS,并用一个简单的Cmmd+S轻松地将其上传到我的服务器。我一直保留一个用于开发的“dev”目录和一个用于生产的“liv

我开发网站已经有几年了,我从来没有时间和精力去学习版本控制。现在,当我开始我曾经开发过的一个更大的项目时,我正在考虑最后一次冒险,并利用这个机会来学习版本控制

我已经阅读了一些简短的描述,但是我仍然在理解集中式版本控制和分散式版本控制的概念上有一些困难。有什么区别?优点/缺点

我正在OS X上开发网站。在过去的几年里,我使用了一个名为的程序来编辑我的HTML/PHP/CSS/JS,并用一个简单的Cmmd+S轻松地将其上传到我的服务器。我一直保留一个用于开发的“dev”目录和一个用于生产的“live”目录。发布补丁和新功能总是像用我在“dev”中的最新更改更新“live”目录一样简单。不过,在这个项目中,我希望为网站的特定方面聘请一些外部设计师/开发人员,这就是我认为SCM的用武之地。此外,这是我第一次需要一个测试版的网站,供用户测试新功能并提供反馈

据我所知,每次我想做一个改变,我就必须拿出我自己的工作副本。我没有将我的工作计算机设置为开发服务器(没有MySQL、PHP)。如何使用远程服务器作为开发服务器来使用版本控制?我需要为我的每个开发人员提供工作目录吗?如何将版本控制与MySql或其他数据库结合使用

另外,我在一个共享托管服务器上,所以我将使用托管版本控制系统,如或

我在这里寻找一个完整的工作流程,看起来像。你是做什么的

我知道这是一个巨大的问题,我真的很感谢大家的意见。

是一本免费的在线电子书,虽然它的目标是Subversion(它工作得很好),但原则适用于所有源代码控制系统。关于分支和合并的章节清楚地解释了如何进行


有一份庞大的TFS白皮书,涵盖了您可能遇到的每一种情况:但我建议您从上面的红豆书开始。

它没有您想象的那么糟糕

你将学会爱上它,因为你永远不会丢失代码,你将能够跟踪历史,你将能够回滚到任何你喜欢的版本

每次我想做一个改变,我就必须拿出我自己的工作副本

事实并非如此。在准备发布工作副本之前,您可以将更改提交到工作副本。您将标记和标记该版本(例如,“maj.min.svn.build”,其中major是主要发行版本号,min是次要发行版本号,svn是subversion修订版本号,build是自动版本号),并愉快地继续修改主干,以便下一个发行版

如果您正在进行并行开发,您只需要fork(“创建分支”)

试试颠覆。这很好,即使Linus Torvalds讨厌它。“SVN红豆”这本书是你应该在谷歌上搜索和阅读的。或者是关于版本控制的实用程序员书籍


我在我的家用机器上运行CollabNet Subversion,并定期检查其中的所有内容。这是一个很好的练习方式。我的东西是安全的这一事实是一个额外的好处。

您可能想使用subversion,并且,除非您想将生产代码保存在自己的主干(如目录)中,否则您不必分叉新的分支,因为您只需查看当前代码与生产代码之间的差异即可


首先,您可以在计算机上安装subversion并签入更改。每当我完成一项功能时,我都会签入,这样,如果我在做另一项更改时完全搞砸了,那么就可以更快地恢复到上一个工作版本并重新开始使用该功能。

老实说,git是最简单的事情之一。subversion现在拥有很大的思想份额,很多使用过它的人在学习git方面都有困难(不同是很难的),但是如果你没有这两个方面的经验,那么其中一个并不比另一个更难

git的基本模型是,您执行一些工作,并记录一个工作快照,其中描述了与前一个快照不同的地方

看到任何两个快照之间的差异,或者“回溯时间”,并在任何先前点查看项目的整个状态,都是微不足道的。所有这些操作几乎都是即时的,并且都不需要访问任何特定的服务器

即时意味着你获得了新的实验自由。你永远不会害怕做一些疯狂的实验,包括删除所有css文件和重新开始。如果工作进展不快,你就把工作扔掉再回去。但即使能够尝试这一点,也会让你走得更远

我喜欢向新来者描述这是一个管理良好的撤销,加上一个非常棒的备份系统。当您将更改推送到另一个存储库(例如github)时,您实际上拥有项目中每个状态的两个副本很快就不可能失去工作了


我想强调最后一点:如果您有一台正在工作的计算机,并且您将快照推送到github,那么您丢失数据的唯一方法是,这两个github都不可用(或者以某种方式丢失了数据)并且您的计算机同时出现故障。如果你有两台电脑在工作,三个系统必须中断。如果使用git将树部署到某处,则必须有四台计算机中断。

以下几个场景可以说明版本控制的帮助:

您正在与开发人员Joe合作进行一个大型项目。大多数代码依赖于一个类。你们两人都决定开发看似独立的功能,但发现