为我的情况选择一个git工作流

时间:2017-09-29 09:50:42

标签: django git

我是git的新手。我已经阅读了well-written intro book。但是,哎呀,它仍然不是一个微不足道的话题。我一直在笨手笨脚,经历各种各样的问题。我意识到这可能是因为我没有意识到工作流程,特别是"做我想做的事情的最佳做法是什么?"

我开始使用Pycharm在win7上开发一个django项目。获得最初95%写作的好方法。

但是我需要在PythonAnywhere将它部署到我的生产机器上。

所以我创建了一个私有的Github存储库,将我的win7代码库推送到github。

然后在pythonAnywhere中,我克隆了github存储库。

目前,没有其他人在这个项目上工作。它不会向公众发布。

现在服务器在PythonAnywhere上运行,我仍然需要调整设置,这最好在PythonAnywhere代码库端完成。但是我在win7上的Pycharm IDE中还有其他的改进(新页面或视图),而不是在任何地方的python上的vim。

所以我有点笨拙地推动和取得这些变化。它有点像火腿,我已经设法通过无知而失去了一些微小的变化。

所以我想知道是否有人可以指出一个相对简单的工作流程来处理我提到的各种任务: 1)改进网站的功能(最好在Pycharm IDE中完成) 2)生产服务器问题和调整(最好在PythonAnywhere上完成) 3)保持每个人在Github上安全备份

另一个问题是我有另一个我想要构建的django应用程序。暂时把它挂在我已经建成的django项目上是最容易的。但我更愿意将其保存在自己的存储库中。

所以我将Original_Project,Original_App存储在Original_Repository中 我想制作new_app,暂时使用它来运行Original_Project,但是我想在New_Repository中对它进行版本控制。

我认为/希望我可以在Original_Repository中添加一个.gitignore,然后忽略new_app /然后我git init new_app/作为自己的存储库。这听起来还是疯了?

2 个答案:

答案 0 :(得分:0)

我一直都在和git一起努力,知道它能让你好好工作,但从来没有确定我做得好。

我建议安装git flow(如果你在Linux上,它可能在你的软件包管理器中可用)。它是一组扩展,简化了标准的git工作流程。自从使用它以来,这几乎就是我需要的所有文档。

https://danielkummer.github.io/git-flow-cheatsheet/

答案 1 :(得分:0)

您应该尽可能避免在生产服务器上编辑代码,并且从不从生产服务器提交。如果你最终不得不在服务器上调整一些东西(你不应该这么做,那么就会发生这种情况,有时它确实更容易让代码重新回到服务器上工作),然后一旦它出现了#39 ; s工作手动报告您对本地仓库的编辑,清除服务器上的更改并再次部署固定代码。这里的github repo应该被视为" master"用于部署的存储库,即您在本地存储库中工作,推送到github,以及从服务器拉取github。这可以确保您保持github repo同步。

wrt /"改进功能" (又名"功能")vs"服务器问题和调整" (又名"修补程序"),git flow是一个(大多数)理智的工作流程恕我直言,但这里有点基于意见(有些人不喜欢它,也有明智的论据)。

最后,如果你想要分析你的某个应用程序,那么最好将它包含在所有proper python packaging stuff的自己的(github)回购中,并使其为requirement你的主要项目。在您的本地开发环境install it as an editable package上,对于生产设置,您将其安装为固定到最后一个稳定版本的普通包。请注意,在这两种情况下,我都假设您正在使用virtualenvs(如果您不这样做,那么这是您应该解决的第一个问题)。

更新:

  

直接在生产服务器上编辑并从生产服务器提交的缺点是什么?

很简单,生产服务器不是编码的地方 - "生产"意味着您有用户试图对您的网站做一些事情,他们不想让网站打破他们,他们的数据丢失或其他什么因为你是"调整"的东西。您应该只在生产中部署稳定且经过良好测试的代码,并且只有一种情况是在服务器上编辑任何内容可能是最后的选择,当它已经破坏并且你想要的时候无论如何都要尽快恢复在线状态(&#34的情况;首先让它工作,然后让它干净")。

重点是,我是专业的开发人员,从事关键业务项目和破碎的网站不是一个选择,所以我对此非常严格 - 但即使它是一个业余爱好项目,您的用户值得尊重(至少如果您希望看到它们)。

正确的生产链实际上涉及至少三个环境:本地开发环境,临时服务器(应该密切镜像生产服务器 - 系统,系统包版本,配置等)以测试/展示/最终做小事配置调整,以及只能看到稳定测试代码的生产服务器。