2

我有一个生产网站,其中 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

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

4

2 回答 2

1

如果您的快速功能分支是在 master 之上开发的,您可以在仍处于快速功能分支的同时重置 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这允许您在考虑 master 的当前状态的同时继续修改。

于 2010-04-27T13:27:09.203 回答
0

“改变生产”是完全错误的,你不应该这样做。

正确的工作流程是: - 在测试/开发站点/沙盒/服务器/任何东西上签出 master - 进行更改,测试更改 - 提交更改,合并到 master,在生产中部署

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

于 2010-04-27T16:19:44.050 回答