5

我决定是时候在一个我随便开发了十多年的 PHP 项目上开始使用 Git。(拜托,版本控制警察不要讲课!)由于我的 VPS 需要复杂的设置来完成项目所需的一切(尤其是单代码库多客户端结构和具有日语能力的 TeX 安装以创建专业 PDF ),无法在我的本地 Windows 机器上设置开发环境。但是我在服务器上确实有一个可以玩的测试台区域,所以它是我的开发区域。目前我使用 Filezilla 访问服务器并直接在 Notepad++ 中打开文件,当我准备好查看我的编辑时,我只需保存并让 Filezilla 上传。当测试台上一切正常时,我将文件复制到生产代码库区域。是的,除了我自己的评论之外,这没有给我任何更改的历史记录,而且我必须小心不要将错误修复与半成品的​​新功能混为一谈。我可以看到 Git 分支对于正在进行的不同升级的价值。

昨天我弄湿了脚趾头。首先,我创建了一个 Github 帐户,然后(在教程的推荐下)安装了 Git For Windows(带有自己的 Bash 和外观小巧的 GUI)和 Kdiff3,并按照一些说明配置 Git Bash。尽管如此,我最终不得不安装其他东西来与我的 Github 帐户(适当地命名为 Windows 版 Github)交互,这似乎完成了其他两个程序应该为我做的所有事情。无论如何,然后我做了一个简单的任务,作为我第一次涉足 Github 世界 - 我已经为其他人的 jQuery 插件添加了功能并想与开发人员共享它,所以我分叉了他的 repo,将它克隆到我的机器上,覆盖了文件我之前已经编辑和测试过,同步过到我的 Github 帐户,并发送了一个拉取请求。最后一句话中的所有术语对我来说都是全新的,所以我为自己能走到这一步感到非常自豪。;) 但我想我只需要 Github 软件,而不是 Git 软件——很难知道该相信哪些教程。

无论如何,现在我想为我自己的东西找出一个工作流程,这是我对你们的实际问题。据我所知,除了公共 Github 之外,在任何地方拥有主仓库都需要花钱,而且我不在乎其他人是否看到我的代码(我不希望其他人从事我由意大利面条代码组成的古怪项目,但如果他们想要,那太好了)。好的,但是然后呢?也许是其中一种情况,或者其他情况:

  1. 将 repo 的分支克隆到我的 PC,对本地文件进行编辑,然后将它们上传到 Filezilla 中进行测试(比我当前的工作流程多点击几次,因为 Filezilla 不会自动查看本地文件和远程文件之间的关系,但没什么大不了的)。然后,当我对代码感到满意时,在本地提交,同步到 Github,然后将文件(从某个地方 - 在这一点上不确定)复制到生产区域。

  2. 在我的 VPS 上安装 Linux 风格的 Git,以便“本地”Git 文件位置是测试平台,并通过 PuTTY 使用 Git 进行本地提交。文件结构更简单(根本不需要在我的电脑上复制)但使用 Git 更麻烦:

    • 我不经常使用 PuTTY,由于某种原因,连接经常在我身上断开,我必须重新启动。
    • 尽管 Linux 命令行是 Git 的原生栖息地,但我可能更喜欢 GUI(因为我很快忘记了命令语法——我猜是老脑子)。

    此外,由于我从未最终使用我在这里安装的 Git 程序,我不确定我将在服务器上使用的是 Git 还是 Github。

  3. 其他一些情况,因为 #1 或 #2 都没有使用 Git/Github 来管理生产文件区域,这可能是一个好主意,这样我就不会忘记复制我需要的所有内容。

我试图研究基于 PHP 的 GUI 与想法 #2 一起使用的可能性(因此我不必使用 PuTTY 进行日常操作),但似乎这些工具的讨论都假设您正在尝试创建自己的 Github 服务,或者“本地”克隆的存储库物理上位于您的本地 PC 上(xAMP 在任何操作系统上运行)。但也许我使用的 Github 软件足以做到这一切——这很难说。我还不了解 Github 上的主公共存储库、某个地方的分支(也在 Github 上?)、我的 Web 服务器上的至少两组文件(测试平台和生产区域)、Github 软件、Git 软件之间的相互作用,和我坐的电脑的键盘/屏幕。

所以请原谅我的新手漫无边际,但如果有人有类似的开发情况,你的工作流程是什么?或者你会给我什么建议?

4

3 回答 3

3

这是解决问题的一种方法:

您将需要三个存储库:

  • 用于编辑代码的本地存储库。[1]
  • 服务器上的裸远程存储库。这将位于不公开可见的位置,但您可以通过 ssh 访问。[2]
  • 生产环境。[3]

这是实现:

workstation$ cd localWorkingDirectory/
workstation$ git init
workstation$ git add .
workstation$ git commit -m 'initial commit'
workstation$ ssh login@myserver
myserver$ mkdir myrepo.git
myserver$ cd myrepo.git
myserver$ git init --bare
myserver$ exit
workstation$ cd localWorkingDirectory/
workstation$ git remote add origin login@myserver:myrepo.git
workstation$ git push origin master

每次在任何分支上进行提交时,请使用以下命令进行备份:

workstation$ git push origin BRANCH

当您准备好将分支version2投入生产时:执行此操作

workstation$ git push origin version2
workstation$ ssh login@myserver
myserver$ git clone path/to/myrepo.git productionDirectory
myserver$ cd productionDirectory
myserver$ git checkout version2

不好了!它不起作用!最好切换回版本1!

workstation$ ssh login@myserver
myserver$ cd productionDirectory
myserver$ git checkout version1
于 2013-04-03T14:16:56.903 回答
1

您不需要 github(或任何其他中央存储)即可开始使用 git。特别是因为你是一个孤独的开发者。Git 直接在您自己的机器上运行,没有任何服务器组件(与 subversion 不同)。只是git init开始承诺。

我同意这里的其他评论者的观点,即您应该致力于建立并运行本地开发环境。即使需要付出一些努力,这当然是值得的。这样做的副作用之一可能是您被迫解耦一些当前的硬依赖关系,从而从中获得更好的整体应用程序架构。不能轻易在您的开发环境中复制的东西可以改为模拟服务。

一旦到位,请查看脚本部署过程。例如,编写一个将您的开发机器的代码库与生产服务器同步的shell 脚本。有很多方法可以做到这一点,但我建议你从非常简单的开始,然后修改你的选择(Capistrano 是一种选择)。

于 2013-04-03T11:19:35.160 回答
0

对于您当前的开发设置,我当然会看一下capistrano 之类的东西。

我可以理解为什么您可能不愿使用终端,但这可能会帮助您在上下文中理解 git。很快就可以掌握这些命令,并且当与 capistrano 等系统绑定时,您将立即将开发代码摇摆到您的环境中:

git commit -a 
git push origin develop
cap deploy:dev

当我在 Windows 上工作时,我通常会尝试使用 sun 的 virtualbox 之类的东西来复制我在本地使用虚拟机的部署环境。这样,您可以在本地开发的同时最大限度地减少潜在的环境问题。然后你可以使用 putty ssh 到你的本地虚拟机。虚拟机和主机操作系统以及所有标准 IDE/编辑器之间的设置共享也可以工作。我发现这比必须远程设置 vps 更可取,但无论如何都可以。

于 2013-04-03T11:10:28.930 回答