Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 我应该如何使用版本控制系统?_Git_Svn_Versioning - Fatal编程技术网

Git 我应该如何使用版本控制系统?

Git 我应该如何使用版本控制系统?,git,svn,versioning,Git,Svn,Versioning,好吧,这个问题的不同版本到处都是,但是我搜索得越多,它就越让人困惑 所以。我是一个内容管理系统的唯一开发人员,该系统在我的远程Linux服务器场上运行。它有大约700MB的PHP文件保存在/Atlas/Core层次结构中,700MB的站点文件保存在/Atlas/Sites中——所有媒体和临时数据都保存在这些位置之外,因此出于所有目的,这两个位置构成了我系统的核心 站点目录对于这个特定位置是唯一的,并且不需要与核心目录同时进行版本控制——基本上,据我所知——将它们作为两个存储库是正确的方法 我所有

好吧,这个问题的不同版本到处都是,但是我搜索得越多,它就越让人困惑

所以。我是一个内容管理系统的唯一开发人员,该系统在我的远程Linux服务器场上运行。它有大约700MB的PHP文件保存在/Atlas/Core层次结构中,700MB的站点文件保存在/Atlas/Sites中——所有媒体和临时数据都保存在这些位置之外,因此出于所有目的,这两个位置构成了我系统的核心

站点目录对于这个特定位置是唯一的,并且不需要与核心目录同时进行版本控制——基本上,据我所知——将它们作为两个存储库是正确的方法

我所有的开发都是在我的Mac电脑上进行的(工作Mac电脑、笔记本电脑、家用Mac电脑等),因为我的CMS配置为在远程Linux系统上运行,所以在我的工作环境上设置相同的Apache/MySQL环境并不是一件优先的事——这可能是可以做到的,但我不知道这是否值得

那么,为什么要进行版本控制呢?好的,一个是能够返回到早期版本,第二个是何时/是否会有更多的开发人员参与

但是我该怎么做呢?我会在服务器X上有一个存储库,而我的实时生产服务器是服务器Y,然后在服务器Z上设置一个“测试”环境吗?所以改变是在Z上,推到X,然后拉到Y

然后我从任何Mac连接到Z,进行更改,并在web浏览器中检查它们,然后将它们两步推送到生产服务器?这对我来说显然是非常麻烦的,但如果没有其他办法的话


你对如何处理这个问题有什么想法吗?我做错了什么?我应该使用什么版本控制系统?

我认为工作环境上的Apache/MySQL是最好的选择。您可以有更简单的开发过程

关于版本控制,我只怀疑它的大小。700Mb是非常大的代码库。Linux内核只有大约100Mb,是几千人几年前写的。也许你有很多二进制文件


无论如何,我建议首先尝试git,但请记住,它在真正的源代码上效果最好,而不是在二进制/自动生成的文件上。如果你能排除他们,那就太好了。如果您有这么好的代码库,我还建议您将其拆分为几个小的存储库。

首先,700MB的源代码有一些(非常)错误。我假设这并不都是真实的源代码,但其中有一些数据库转储和图像

用git对整个过程进行版本控制相当容易。只要您是唯一的开发人员,代码就不需要中央服务器。只需在开发人员系统上设置git并开始版本控制。如果你愿意,你可以停在那里。坚持使用旧的部署过程并完成它

下一步是将中央回购添加到该设置中。我个人建议以7美元/月的价格获得私人github回购。这样,您就不必担心安装或备份,向项目中添加新的开发人员非常简单。此外,您还可以查看代码并跟踪问题。当你有一个中央回购,你只是推你的变化有一段时间。完成。拥有中央回购(只要您是唯一的开发人员)的最大优势在于,您的代码及其所有历史记录都备份在远程位置

如果愿意,还可以使用git进行部署。我建议这样做。关于如何做到这一点,有很多教程。我更喜欢“推送和自动签出”设置。然后您的工作流程如下:开发、提交、推送到Web服务器。无论你是否有中央回购,都没有任何区别


我推荐的版本控制系统绝对是git。或者任何其他分散的问题,但我只有使用git的经验。

好吧,这里没有什么问题,所以我将尝试解决所有问题

问题1。那么,为什么要进行版本控制呢

你给出的两个理由已经足够了,但也是

  • 有备份
  • 要将代码库的某些快照标记为“特殊”-一个版本,一个 里程碑
  • 尝试一些可能需要很长时间并且可能会 报废。您可以将其提交到分支,如果它不起作用,您的 产品代码未被触及
一个更好的问题可能是,
是否有一个不使用版本控制的好理由?
我唯一能想到的是,这在您的工作流程中是额外的几个步骤,但从长远来看,这会带来100倍的回报,因此您可以而且应该接受额外的步骤

我建议将git与在线存储库服务(如或)结合使用。我更喜欢BitBucket——你需要多少免费私人回购(在发布时)

问题2。但是我该怎么做呢? 我会在服务器X上有一个存储库,而我的实时生产服务器是服务器Y,然后在服务器Z上设置一个“测试”环境吗?所以改变是在Z上,推到X,然后拉到Y

你所描述的听起来不错,所以只要:

  • 读这本书
  • 在服务器上安装git
  • 将BitBucket或GitHub用作服务器X
“…将它们推送到生产服务器的两个步骤?……”没有其他方法吗?”

严格地说,你甚至不需要服务器X。你可以直接从Y推到Z。不过我不会这样做,因为我更喜欢使用你所描述的中央存储库的概念。尽管每个git repo都是存储库的完整副本,所以你可以直接从Y推到Z。这个链接可能有用

有没有想过如何处理这个问题?我做错了什么?还有什么 我应该使用版本控制系统吗

我不认为你做错了什么

正如我上面所说的,我推荐git.Mercurial非常类似,但我发现git.BitBucket和GitHub支持更多

如果你最终