3

我从事许多位于单个 Web 服务器上的 ColdFusion 项目。我最近在 SO 上被其他人“展示”并希望转向开发机器/测试机器/生产机器开发方法。

我现在正试图调和如何最好地处理我(和我们机构中的其他人)被“强迫”工作的方式......

假设我们的网络服务器是这样设置的

-Root
--Project 1
--Project 2
--Project 3
--Framework Files

还假设我们设置了一个中央 git 存储库,并且我有一个正在使用的根的克隆。该组中的所有其他开发人员也拥有自己的存储库克隆。

所以——现在是星期一早上,我开始着手项目 1。我正在处理大约 4 小时的功能请求,我的八个不同老板中的一个进来告诉我有一个关键问题需要解决在项目 2 中得到修复。星期一是一个很好的开始。

我需要修复 Project 2 STAT,但我还没有完成 Project 1 的功能请求。如果我在项目 2 中修复,然后提交到我的本地存储库以推送测试......它将在 P1 中包含未完成的功能......这很糟糕。

如果我从Joel Spolsky 的 Mercurial Init Architecture 页面推断,是否为每个子项目创建存储库的“开发”克隆的解决方案?要提交这些,然后提交到主本地存储库,然后提交到主共享存储库?

Git 中是否还有我遗漏的另一个概念?

谢谢大家,克里斯

4

2 回答 2

8

我建议看一下分支

通过分支,您可以一次维护多个不同的开发流,并在它们之间轻松交换。此外,您可以在远程存储库中创建远程分支,并且多个团队成员可以同时处理这些分支。它们的寿命可以长到你想要的那样短,Git 擅长创建和维护很多很多分支。

它与 stash 不同,因为 stash 是一种基于堆栈的机制,用于存储稍后返回的工作。至少可以说,它不是分布式的,并且通过堆栈管理多个工作流会很困难。

这是一个讨论分支工作流程的有用页面。

于 2012-04-10T16:04:57.053 回答
5

您缺少该stash功能,它可以让您“收起”未完成的工作并稍后再回来。此功能允许您获取一个“脏”目录 - 自上次提交以来您已经修改了文件,但还没有完全准备好提交 - 并保存更改而不进行提交。该目录将返回到它查看上次提交的方式,您的更改由 git 保存。用法非常简单...从上面的链接中,您可以使用以下方法保存您的工作save

$ git stash save "work in progress for foo feature"

您可以使用以下命令再次恢复您的工作apply

$ git stash apply

另一个问题是您将所有项目都放在一个仓库中。虽然这不是最佳实践,但可以使用submodules来解决,这实质上允许您在单个总体存储库中拥有多个存储库。上面的链接是关于如何使用子模块的一个很好的资源,这里有很多有用的帖子讨论如何使用它们

于 2012-04-10T16:00:51.620 回答