版本控制令我难过

blo*_*ilk 4 svn git version-control

我已经开发了几年的网站,我从来没有时间或精力去学习版本控制.现在,当我开始我开发的一个更大的项目时,我正在考虑最终采取这种方式,并将其作为学习版本控制的机会.

我已经阅读了几个简短的描述,但是我仍然在掌握集中式版本控制和分散版本控制的概念方面遇到了一些麻烦.有什么区别?优点缺点?

我正在OS X上开发网站.在过去的几年里,我使用了一个名为Coda的程序来编辑我的HTML/PHP/CSS/JS,并使用简单的Cmmd + S.轻松将其上传到我的服务器.我已经始终保留一个'dev'目录用于开发,以及一个用于生产的"实时"目录.推出修复程序和新功能一直都像使用'dev'中的最新更改更新"实时"目录一样简单.但是,通过这个项目,我希望聘请一些外部设计师/开发人员来访问网站的特定方面,这也是我认为SCM的用武之地.而且,我第一次需要网站的测试版本.用户测试新功能并提供反馈.

据我所知,每次我想要做出改变时,我都要分叉(?)我自己的工作副本.我没有将我的工作计算机设置为开发服务器(没有MySQL,PHP).如何使用远程服务器作为开发服务器进行版本控制?我是否需要为每个开发人员提供工作目录?如何将版本控制与MySql或其他数据库结合使用?

此外,我在共享托管服务器上,所以我将使用像BeanstalkGithub这样的托管版本控制系统.

我在这里寻找整个工作流程,似乎.你是做什么?

我知道这是一个很大的问题,我非常感谢大家的意见.

duf*_*ymo 5

它没有你想象的那么糟糕.

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

每次我想做一个改变,我都要分叉(?)我自己的工作副本

这不是真的.您可以随时提交对工作副本的更改,直到您准备发布它为止.您将标记并标记该版本(例如,"maj.min.svn.build",其中major是主要版本号,min是次要版本号,svn是subversion版本号,build是自动构建号)并快乐地为你的下一个版本修改后备箱.

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

尝试Subversion.即使Linus Torvalds讨厌它也很不错."SVN红豆"一书就是Google应该阅读的内容.或者关于版本控制的实用程序员书.

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


Dus*_*tin 5

老实说,git是最简单的东西之一.颠覆现在有一个非常大的思想共享,许多一直在使用它的人在学习git时遇到困难(不同的是很难),但是如果你没有经验,那么一个并不比另一个更难.

使用git的基本模型是你做了一些工作,并记录了你的工作快照,并描述了它与前一个快照的不同之处.

看看这两个快照中的任何两个之间的差异,或者"回到过去"并在任何先前的点上查看项目的整个状态,这是微不足道的.所有这些操作大致是即时的,并且不需要访问任何特定服务器.

瞬间意味着你获得了新的实验自由.你永远不会害怕做一些疯狂的疯狂实验,包括删除所有的css文件和重新开始.如果它没有快速解决,你只需将工作扔掉然后再回去.但是,即使尝试这个也会让你真的很远.

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

我想强调最后一点:如果你有一台计算机,你将快照推送到github,唯一可能丢失数据的方法是,如果两个 github都不可用(或者某种方式丢失了你的数据)并且你的计算机坏了同时.如果您有两台计算机,则必须打破三个系统.如果你使用git在某处部署你的树,那么四台计算机就必须中断.