2012-04-10 33 views
2

我使用了许多安装在单个Web服务器上的ColdFusion项目。我最近被SO上的其他人'shown the light'想要转向开发机器/测试机器/生产机器开发方法。如何使用Git进行多任务

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

比方说,我们的网络服务器建立这样

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

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

所以 - 这是星期一的早晨,我已经对项目1.开始工作,我在估计4小时功能要求的中间,我的八个不同的一个老板进来,告诉我,有一个关键的需要在Project 2中解决这个问题。星期一是一个很好的开始。

我需要修复工程2 STAT,但我不会与项目1的功能要求做呢。如果我在Project 2中修复,然后提交到我的本地存储库以推动测试......它将在P1中包含未完成的功能......这是不好的。

如果我从Joel Spolsky's Mercurial Init Architecture page推断,是建立资源库中每个子项目的“开发”克隆的解决方案?为了承诺这些,然后提交到本地主存储库,然后提交到主共享存储库?

是否有Git的另一个概念是我失踪?

感谢所有,克里斯

回答

7

我建议在看branching

通过分支,你可以保持发展的多个不同的流一次,并在它们之间交换平凡。此外,您可以在远程存储库中创建远程分支,并且多个团队成员可以同时处理这些分支。他们可以像你想要的那样长寿或短命,Git擅长创建和维护许多分支机构。

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

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

+0

这会让我花一点时间来完全消化git流 - 但这看起来很有用。 – 2012-04-10 18:18:32

4

你错过了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