Php 面向独立开发人员的Git工作流(Git新手总数)

Php 面向独立开发人员的Git工作流(Git新手总数),php,git,github,github-for-windows,Php,Git,Github,Github For Windows,我已经决定,是时候开始在一个PHP项目上使用Git了,我已经随意开发了十多年。(请不要听版本控制警察的讲座!)由于我的VPS上需要复杂的设置来完成项目所需的一切(特别是单代码库多客户端结构和支持日语的TeX安装来创建专业PDF),因此无法在我的本地Windows box上设置开发环境。但我确实在服务器上有一个可以玩的测试区,所以这是我的开发区。目前,我使用Filezilla访问服务器并将文件直接打开到Notepad++,当我准备好查看我的编辑时,我只需保存并让Filezilla上传。当测试台上的

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

昨天我把脚趾弄湿了。首先,我创建了一个Github帐户,然后(根据教程的建议)安装了Git For Windows(带有自己的Bash和外观小巧的GUI)和Kdiff3,并按照一些说明配置Git Bash。然而,在这一切之后,为了与我的Github帐户(恰当地命名为Github for Windows)接口,我不得不安装其他东西,这似乎完成了其他两个程序应该为我做的所有事情。无论如何,我第一次进入Github世界时做了一个简单的任务——我在别人的jQuery插件中添加了功能,并想与开发人员共享,所以我分叉了他的repo,将它克隆到我的机器上,重写了我以前编辑和测试过的文件,同步到我的Github帐户,并发送了一个拉取请求。最后一句话中的所有术语对我来说都是全新的,所以我为自己走了这么远而感到自豪但我想我只需要Github软件,而不是Git软件——很难相信有什么教程

不管怎样,现在我想为我自己的东西制定一个工作流程,这是我真正想问你们的问题。据我所知,除了公共Github之外,任何地方都有主回购协议需要花钱,而且我不在乎别人是否看到我的代码(我不希望其他人参与我用意大利面条代码制作的古怪项目,但如果他们愿意,那就太好了)。好吧,那又怎么样?可能是其中一种情况,或者其他情况:

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

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

    • 我不经常使用PuTTY,出于某种原因,连接经常会在我身上消失,我必须重新启动
    • 尽管Linux命令行是Git的原生环境,但我可能更习惯于使用GUI(因为我很快就忘记了命令语法——我想是老脑筋吧)
    另外,由于我从未使用我在这里安装的Git程序,我不确定我在服务器上使用的是Git还是Github

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

  • 我曾试图研究基于PHP的GUI与idea#2配合使用的可能性(因此我不必在日常操作中使用PuTTY),但关于此类工具的讨论似乎都假设您正在尝试创建自己的Github服务,或者“本地”克隆的repo实际位于本地PC上(xAMP运行在任何操作系统上)。但也许我使用的Github软件足以做到这一切——很难说。我还不明白Github上的主公共回购、某个分支(也在Github上?)和我的web服务器上的至少两组文件(测试床和生产区)之间的相互作用,Github软件,Git软件,还有我坐的电脑的键盘/屏幕


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

    我当然会为你当前的开发设置看看类似的东西

    我可以理解为什么您可能对使用终端保持沉默,但这可能有助于您在上下文中理解git。掌握这些命令并不需要很长时间,当您与capistrano这样的系统结合时,您将很快将开发代码与您的环境结合起来:

    git commit -a 
    git push origin develop
    cap deploy:dev
    
    在windows上工作时,我通常会尝试使用sun的virtualbox之类的工具在本地复制虚拟机的部署环境。这样,您可以在本地开发的同时最大限度地减少潜在的环境问题。然后,您可以使用putty以ssh方式连接到本地虚拟机。设置虚拟机和主机操作系统之间的共享而且你所有的标准IDE/编辑器也都可以工作。我发现这比远程设置vps更好,但不管什么都可以。

    你不需要github(或任何其他中央存储)来开始使用git。特别是因为你是一个单独的开发人员。git直接在你自己的机器上运行,没有任何服务器组件(不像
    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
    
    workstation$ git push origin version2
    workstation$ ssh login@myserver
    myserver$ git clone path/to/myrepo.git productionDirectory
    myserver$ cd productionDirectory
    myserver$ git checkout version2
    
    workstation$ ssh login@myserver
    myserver$ cd productionDirectory
    myserver$ git checkout version1