我已经决定是时候开始在一个PHP项目上使用Git,这个项目我已经随便开发了十多年。 (请不要,版本控制警察没有讲座!)由于我的VPS需要进行复杂的设置来完成项目所需的一切(特别是单代码库 - 多客户端结构和支持日语的TeX安装以创建专业PDF ),无法在我的本地Windows框中设置开发环境。但我确实在服务器上有一个可以玩的测试区域,所以这是我的开发区域。目前我使用Filezilla访问服务器并直接将文件打开到Notepad ++中,当我准备好看到我的编辑功能时,我只需保存并让Filezilla上传。当测试平台上的一切看起来都很好时,我会将文件复制到生产代码库区域。是的,除了我自己的评论之外,这给了我没有我的变化的历史,我必须小心不要将错误修复与半完成的新功能混合在一起。我可以看到Git的分支对正在进行的不同升级的价值。
昨天我的脚趾湿了。首先我创建了一个Github帐户,然后(在教程的推荐下)安装了Git For Windows(带有自己的Bash和外观很小的GUI)和Kdiff3,并按照一些配置Git Bash的说明进行操作。尽管如此,我最终还是需要安装其他东西以便与我的Github帐户(适当地命名为Github for Windows)进行交互,这似乎完成了其他两个程序应该为我做的所有事情。无论如何,然后我做了一个简单的任务,因为我第一次涉足Github世界 - 我已经为其他人的jQuery插件添加了功能,并希望与开发者分享,所以我分叉他的回购,克隆它到我的机器,覆盖我之前编辑和测试的文件,同步到我的Github帐户,并发送拉取请求。最后一句话中的所有术语对我来说都是全新的,所以我为自己感到骄傲,因为我走得那么远。 ;)但我想我只需要Github软件,而不是Git软件 - 很难知道哪些教程可以相信。
无论如何,现在我想弄清楚我自己的东西的工作流程,这是我们的实际问题。从我所知道的,除了公共Github花钱之外的任何地方都有主回购,我不在乎别人是否看到我的代码(我不指望其他人可以处理由意大利面条代码组成的古怪项目,但是如果他们想,那很好)。好的,但那又怎样?也许是其中一种情况,或其他:
将repo的分支机构克隆到我的PC,对本地文件进行编辑,然后将它们上传到Filezilla进行测试(比我当前的工作流程点击几次,因为Filezilla不会自动看到本地之间的关系文件和远程文件,但没什么大不了的。然后,当我对代码感到满意时,在本地提交,同步到Github,并将文件(从某处 - 在这一点上不确定)复制到生产区域。
在我的VPS上安装Git的Linux风格,以便“本地”Git文件位置是测试平台,并使用Git通过PuTTY进行本地提交。文件结构更简单(根本不需要在我的电脑上复制)但使用Git更麻烦:
另外,由于我从未使用过我在这里安装的Git程序,我不确定它是Git还是Github我会在服务器上使用。
其他一些场景,因为#1或#2都没有使用Git / Github来管理生产文件区域,这可能是一个好主意,所以我不会忘记复制我需要的一切。
我试图研究基于PHP的GUI与#2想法的可能性(所以我不必使用PuTTY进行日常操作),但似乎这些工具的讨论都是假设您正在尝试创建自己的Github服务,或者“本地”克隆存储库在物理上位于您的本地PC上(xAMP在任何操作系统上运行)。但也许我使用的Github软件足以完成所有这些 - 很难说。我还不了解Github上的主公共仓库,某处的分支机构(Github上也有?),我的Web服务器上至少有两组文件(测试平台和生产区域),Github软件,Git软件,以及我正坐在的电脑的键盘/屏幕。
所以请原谅我的新手ramblings,但如果那里有人有类似的发展情况,你的工作流程是什么?或者你会为我建议什么?
答案 0 :(得分: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
答案 1 :(得分:1)
您不需要github(或任何其他中央存储)来开始使用git。特别是因为你是一个单独的开发者。 Git直接在您自己的机器上运行,没有任何服务器组件(与例如subversion不同)。只需git init
并开始提交。
我同意这里的其他评论者的意见,您应该致力于让本地开发环境正常运行。即使需要付出一些努力,它也是值得的。这样做的一个副作用可能是您不得不将当前的一些硬依赖性分离,从而从中获得更好的整体应用程序架构。在开发环境中无法轻易复制的内容可以替换为模拟服务。
一旦到位,请查看脚本化部署过程。例如。编写一个shell脚本,将开发机器的代码库与生产服务器同步。有很多方法可以做到这一点,但我建议你开始非常简单,然后修改你的选择(Capistrano是一个选项)。
答案 2 :(得分:0)
我当然会针对您当前的开发设置查看capistrano之类的内容。
我可以理解为什么你可能会对使用终端保持沉默,但这可能有助于你理解上下文中的git。不需要花费很长时间来掌握这些命令,当绑定到像capistrano这样的系统时,您可以立即将开发代码推向您的环境:
git commit -a
git push origin develop
cap deploy:dev
当我在Windows上工作时,我通常会尝试使用sun的virtualbox等本地复制虚拟机部署环境。这样,您可以在本地开发的同时最大限度地减少潜在的环然后你可以使用putty来ssh到你当地的虚拟机。 vm与主机操作系统和所有标准IDE /编辑器之间的设置共享也将起作用。我发现这比远程设置vps更好,但无论如何都有效。