【问题标题】:How to use git feature branches with live updates and merge back to master?如何使用带有实时更新的 git 功能分支并合并回 master?
【发布时间】:2010-04-27 13:14:38
【问题描述】:

我有一个生产网站,其中 master 已签出,还有一个开发网站,我在功能分支中进行开发。

当一个特性被合并到 master 中时,我会在开发站点上这样做:

(currently on the new-feature branch)
$ git commit -m"new feature finished"
$ git push
$ git checkout master
$ git merge new-feature
$ git push

在生产现场:

(currently on master branch)
$git pull

这对我有用。但有时客户打电话并需要快速在网站上进行小改动。我可以在 master 和 push master 上的生产中执行此操作,并且效果很好。

但是当我使用功能分支进行小改动时,我会发现差距:

(On production on branch master)
$ git branch quick-feature
$ git checkout quick-feature
$ git push origin quick-feature
$ edit files...
$ git add .
$ git commit -m"quick changes"
$ git push # until this point the changes are live
$ git checkout master #now the changes are not live anymore GAP
$ git merge quick-feature # now the changes are live again
$ git push

我希望我能明确这个工作流程的意图。你能推荐一些更好的吗?

【问题讨论】:

  • 你说的差距很小;您可以使用简单的$ git checkout master && git merge quick-feature 将其最小化

标签: git production-environment


【解决方案1】:

如果你的 quick-feature 分支是在 master 之上开发的,你可以在仍然在 quick-feature 分支的时候重置 master 分支:

git branch -f master

这样,您就可以避免 checkout master 暂时从您的工作树中删除快速功能。

x--x--x  (master)
       \                          => x--x--x--f--f--f--f (master, quick-feature)
        -f--f--f (quick-feature)

当你切换回 master 时,另一个解决方案是请求合并

 git checkout --merge master

这允许您在考虑主控当前状态的同时保持quick-feature修改。

【讨论】:

  • 非常感谢。图纸真的很有帮助。 - karthorwald - 又名
  • git 在第二版“git checkout --merge master”中真正做了什么?如果我是 git,我会在幕后做第 1 版是“git branch -f master”吗? - karthorwald - 又名
  • @user89021:如果master 在完成quick-feature 的过程中发生了一些变化,则需要结帐步骤。如果master 没有进化,那么您确实可以简单地在quick-feature HEAD 上重置master
  • 我第一次尝试这个:我提交了快速功能,然后说“git checkout -m master”但是快速功能文件消失了。我像以前一样得到了主人。
  • @user89021:正常,它只处理索引文件,不处理来自快速功能的提交文件。如果master没有被修改,你可以尝试第一个选项吗? git branch -f master
【解决方案2】:

“对生产进行更改”是完全错误的,您不应该这样做。

正确的工作流程是: - 在测试/开发站点/沙箱/服务器/任何东西上结帐大师 - 做出改变,测试改变 - 提交更改,合并到 master,部署到生产中

这就是分支的用途。您甚至可以通过在 git 中使用钩子来使您的工作流程更加自动化,这些钩子会在生产中自动部署您“git push”到特定分支的所有内容,该分支可能是主分支或另一个专用分支。

【讨论】:

  • 是的,我同意这一点。这是一个坏习惯,我应该为这种情况设置第三个环境 - karlthorwald - aka
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
相关资源
最近更新 更多