如何使用Git存储库进行Web开发(和部署)?

时间:2011-05-17 21:56:03

标签: git workflow

来自简单的“直接在ftp上编辑”工作流程,我想尝试源版本控制。我可以想象,GIT是一个非常受欢迎的选择。

我是一名开发人员。我在远程服务器(Linux)上有多个我工作的网站(每个在/ home / domains /中),我希望在本地(Mac OS)开始处理它们,然后再将它们推回(更新远程文件)。 / p>

但我并不了解git应该如何为我工作。看起来我必须有一个“裸”存储库,我不能拥有它,因为我的项目已经有文件和文件夹,所以这意味着我必须创建一个新的裸存储库,然后在本地推送东西,然后远程拉取

这看起来有点奇怪,当我只处理2个文件夹时,有3个存储库(1个本地和2个遥控器)。

我能得到一些建议吗?

2 个答案:

答案 0 :(得分:3)

如果您在服务器和本地系统之间进行在线访问,则有两种标准的,理智的选项。

首先,您可以为其他存储库添加远程数据库,并在开始进行更改之前从其他存储库中提取所有已提交的更改。这意味着,例如,如果您在本地系统上进行更改,则必须ssh到服务器并拉动以获取更改。

其次,您可以创建一个裸存储库来充当主服务器。这是共享存储库的标准模型,尤其是当涉及多个用户但是当涉及一个用户时它可以工作 当两个系统之间可能没有全时双向访问时,首选。这个裸存储库可以在mac系统上,在linux服务器上,或在第三个系统上(例如github)。在这种情况下,工作流程将从裸存储库中提取所有更改,进行更改,提交,然后将该更改推送到裸存储库。如果没有特殊的钩子,您仍然需要ssh到服务器并发出拉动以更新实时网站。

您可以通过从服务器存储库执行git clone --mirror --bare来创建新存储库。然后你会在服务器上git add remote origin URL-TO-NEW-BARE-REPOSITORY。您可以在macosx系统上执行相同的操作,也可以git clone URL-TO-NEW-BARE-REPOSITORY

技术上可能配置系统以允许macosx系统推送到已检出的linux工作目录。我不建议这样做,特别是如果您可能正在对该存储库进行更改,因为该进程可能/将会破坏任何未提交的更改。自动挂钩也会发生类似的问题,它会自动发送/检出传入的提交到实时网络服务器目录。

供参考,请考虑http://toroid.org/ams/git-website-howtohttp://joemaller.com/990/a-web-focused-git-workflow/

答案 1 :(得分:0)

我的工作流程是这样的:

  • 我有一个远程仓库和一个本地仓库(它们是正常的仓库,而不是裸仓)
  • 我在当地的仓库工作
  • 我承诺
  • 我将更改推送到远程仓库
  • 我ssh到远程计算机并在远程仓库上运行git reset --hard以更新文件

对我来说效果很好,特别是因为我使用Fabric来执行推送和重置步骤,所以它归结为单fab push

为了澄清我是一名开发人员,如果您在更大的团队中开发网页,可能效果不佳。