草庐IT

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

coder 2024-04-06 原文

我决定是时候开始在一个 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/

    有关php - 单独开发人员的 Git 工作流程(全部 git 新手)的更多相关文章

    1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

      我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

    2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

      我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

    3. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

      我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

    4. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

      我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

    5. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

      关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

    6. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

      在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

    7. Ruby Sinatra 配置用于生产和开发 - 2

      我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

    8. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

      我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

    9. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

      这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

    10. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

      我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

    随机推荐