单独开发人员的Git工作流程(总git新手)

时间:2013-04-03 08:54:10

标签: php git github github-for-windows

我已经决定是时候开始在一个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花钱之外的任何地方都有主回购,我不在乎别人是否看到我的代码(我不指望其他人可以处理由意大利面条代码组成的古怪项目,但是如果他们想,那很好)。好的,但那又怎样?也许是其中一种情况,或其他:

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

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

    • 我不经常使用PuTTY,由于某种原因连接经常死在我身上,我不得不重新启动。
    • 尽管Linux命令行是Git的原生栖息地,但我可能对GUI更加满意(因为我很快就忘记了命令语法 - 老脑,我猜)。

    另外,由于我从未使用过我在这里安装的Git程序,我不确定它是Git还是Github我会在服务器上使用。

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

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

    所以请原谅我的新手ramblings,但如果那里有人有类似的发展情况,你的工作流程是什么?或者你会为我建议什么?

3 个答案:

答案 0 :(得分:3)

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

您需要三个存储库:

  • 编辑代码的本地仓库。 [1]
  • 服务器上的裸远程存储库。这将位于不可公开查看的位置,但您可以访问。 [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

答案 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更好,但无论如何都有效。