如何使用Git进行多任务处理

时间:2012-04-10 15:58:27

标签: git coldfusion

我处理许多位于单个Web服务器上的ColdFusion项目。我最近一直在' shown the light'其他人在SO上,并希望转向开发人员机器/测试机器/生产机器开发方法。

我现在正在努力调和如何最好地处理我(以及我们机构中的其他人)被强迫的方式#39;工作......

让我们说我们的网络服务器就像这样设置

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

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

所以 - 星期一早上我已经开始研究项目1.我正处于估计的4小时特征请求中间,我的八个不同老板中的一个进来了告诉我,项目2中存在一个需要修复的关键问题。星期一开始了。

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

如果我从Joel Spolsky's Mercurial Init Architecture page进行推断,那么解决方案就是创建一个' dev'克隆每个子项目的存储库?要提交那些,然后提交到主本地存储库,然后提交到主共享存储库?

Git中还有另一个我失踪的概念吗?

谢谢大家,克里斯

2 个答案:

答案 0 :(得分:8)

我建议查看branching

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

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

Here's a useful page讨论分支工作流程。

答案 1 :(得分:5)

您错过了stash功能,该功能可让您“收起”未完成的作品并稍后再回来查看。此功能允许您使用“脏”目录 - 您在上次提交后修改了文件,但尚未准备好进行提交 - 并保存更改而不进行提交。该目录将返回到它上次提交的方式,您的更改由git保存。用法非常简单......从上面的链接中,您可以使用save

保存您的工作
$ git stash save "work in progress for foo feature"

您可以使用apply

重新恢复工作
$ git stash apply

另一个问题是您将所有项目都放在一个仓库中。虽然这不是最佳实践,但可以使用submodules来解决,这实际上允许您在单个总体存储库中拥有多个存储库。以上链接是关于如何使用子模块的优秀资源,并且有一个number of useful posts here on SO discussing how to use them