php - 单独开发人员的 Git 工作流程(全部 git 新手)

标签 php git github github-for-windows

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

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

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

  • 将 repo 的分支克隆到我的 PC,对本地文件进行编辑,然后将它们上传到 Filezilla 进行测试(比我当前的工作流程多点击几下,因为 Filezilla 不会自动查看本地文件和远程文件之间的关系,但没什么大不了的)。然后当我对代码感到满意时,在本地提交,同步到 Github,并将文件(从某个地方 - 不确定)复制到生产区域。
  • 在我的 VPS 上安装 Linux 版本的 Git,以便“本地”Git 文件位置是测试平台,并通过 PuTTY 使用 Git 进行本地提交。文件结构更简单(根本不需要我的 PC 上的副本)但使用 Git 更麻烦:
  • 我不经常使用 PuTTY,由于某种原因,连接经常在我身上消失,我必须重新启动。
  • 尽管 Linux 命令行是 Git 的原生栖息地,但我可能更喜欢 GUI(因为我很快就会忘记命令语法——我猜是老脑子)。

  • 此外,由于我从未最终使用过我在此处安装的 Git 程序,因此我不确定我将在服务器上使用的是 Git 还是 Github。
  • 其他一些情况,因为 #1 或 #2 根本不使用 Git/Github 来管理生产文件区域,这可能是一个好主意,这样我就不会忘记复制我需要的所有内容。

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

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

    最佳答案

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

    您将需要三个存储库:

  • 用于编辑代码的本地存储库。 [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
    

    关于php - 单独开发人员的 Git 工作流程(全部 git 新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782817/

    相关文章:

    git - 如何在裸 Git 存储库中搜索当前修订内容中的字符串?

    android - 如何在本地 repo 中切换 android 版本?

    git - Tomcat/Hudson 无法连接到 Github

    r - 是否可以在 github 上放置 R 代码的自述文件,显示输出?

    php - 如何创建一个新列包含 id 列的散列

    macos - Git svn 在 OS X 上再次损坏

    php - mysql子查询问题

    Github (SSH) 通过公共(public) WIFI,端口 22 被阻止

    php - 如果我在使用 Mysql 的 Laravel 中使用 Query Builder 而不是 Eloquent ORM,模型仍然有用吗?

    PHP数组逻辑