9

以下是我日常工作的描述:

两名开发人员从事许多小功能或修复工作,假设每个开发人员每天 3-4 人。我需要能够同时处理功能 A - B - C,而我的同事处理功能 D 和 E。

星期一:功能 A 被推送到登台服务器以供客户审查。功能 B 被推送到同一个登台服务器以供客户审查。功能 D 被推送到同一个登台服务器以供客户审查。

星期二:我们收到客户对 A 和 D 的批准(但不是 B)。他们需要立即适应这些变化。

星期三:功能 C 被推送到同一个登台服务器以供客户审查。最终收到 B 的批准。

星期四:功能 B 必须立即投入生产。

Friday : 在上一个生产版本中发现一个错误,我们需要回滚到以前的版本。

这不能被视为类似于 Scrum 的过程,因为没有机会将功能分组到故事或 sprint 计划中。这更像是一个维护过程(也许是看板?)。

你能举一个例子来说明你将如何使用 Git 来处理这个问题吗?假设现在,我们只有一个 master 分支,每当我们想要将任何东西推送到暂存或生产时,我们必须“git pull”使所有更改生效(甚至是不需要的更改)。用 git "cherry-pick" 来检索特定的提交怎么样?每个功能一个分支似乎太繁重了,因为我们有太多的功能。如果你能给出 Git 命令和分支的具体例子(只是为了展示主要思想,不需要 100% 正确),那就太好了。

谢谢。

4

4 回答 4

6

根据您的描述,我将采用发布分支和许多工作分支的策略。

含义:您应该将您的登台服务器设置为仅staging在您和您的同事都在您自己的功能分支(A、B、C 和也许 master)上工作时从分支中提取

每当更改必须生效时,您只需将功能合并到staging分支中并将其推送到服务器 - 登台环境然后拉动该分支并进行部署。

一旦您获得了客户的批准,您就可以推送功能分支(已经合并staging到另一个分支(可能stable)中,然后将其部署到生产中。

投入生产后,您可以删除功能分支并重新开始..

TLDR: 将您的每个环境视为一个分支,只有在需要某个功能时才会被推送到那里。这样你甚至可以从不应该去那里的分支/环境中恢复更改。

而且我会采用看板方法 - 更容易,并且你似乎在做更适合的事情。

于 2011-12-16T18:09:31.410 回答
3

我最终选择了以下处理方式:

  • 一个主远程存储库。

  • 一个地方分公司正在分期。

  • 一个当地的生产分支机构。

    git checkout -b staging #on staging server
    git checkout -b production #on production server

程序员 A 需要处理功能/补丁 A:

#local development box
git checkout master
git checkout -b issue-A
#work on the feature
git push origin issue-A
#log in to the staging server
git checkout staging
git pull origin issue-A #merge with the staging branch, changes are live on staging.

开发功能 B 的程序员 B 也是如此。

上线生产:

#log in to the production server.
git checkout production
git pull origin issue-A #merge with the production local branch, changes are live on production.

此外,当更改生效并获得批准时,可以将本地生产分支推送到 master:

git add <files>
git commit <commit info>
git push origin master

这是在我们的情况下效果最好的方法,希望它对某人有所帮助。

于 2012-02-22T20:37:52.413 回答
1

我已将 git-flow 调整为:https: //plus.google.com/109096274754593704906/posts/R4qkeyRadLR

最大的区别在于,您在冲刺/迭代中从同一个起点开始所有功能。

于 2011-12-16T18:05:36.883 回答
1

我们已经将 git flow 用于此类场景。

由于 git flow 允许您创建多个功能,并且只将您想要的功能推送到开发和主分支,它应该与您的要求很好地吻合。

以下是 git-flow 的一些链接:

https://github.com/nvie/gitflow/ http://yakiloo.com/getting-started-git-flow/

于 2011-12-16T17:21:20.590 回答