我已经创建了一个测试分支。构建一个功能有很多微小的承诺。最后,我要进行最后完成的更改,并将其放入master分支中。
master分支不应包含测试分支的历史记录。
测试分支最终将被删除。
实现此目标的最佳方法是什么?
生成补丁并将其应用于master是最好的方法吗?
如果是这样,我如何生成/应用补丁?
我正试图将我们的组织从SVN切换到Git.现在我们的工作流程看起来像这样:
我认为Git可能对第4步和第5步有很大的帮助.具体来说,当有10次提交时,同行代码审查非常困难,可能会有大量的提交*.我知道使用Git很容易还原提交,可能会为每个功能/错误创建一个提交来审核.引导我提出我的问题:
对于涉及冗长QA来回的场景,最好的Git工作流程是什么?
请记住,我遇到了一些变化的阻力,因此工作流程越简单,就越有可能被采用.还要记住,这是一个Web开发项目,因此QA针对Beta服务器进行测试,而不是本地测试,因此QA交换分支并不是真正的选择.
*意思是,在此错误提交的提交之间可能存在来自同一文件上的其他错误票据的提交,与之前的状态进行简单比较,并且难以隔离此票证的代码更改.
像往常一样,在我们的项目中,我们有一个主分支。基于此的部署分支将在其中修改设置。基于此的还有运行部署镜像的镜像分支。master分支不应包含任何更改配置的补丁。
在mirror分支中开发了一些小的功能和修复程序。因此,添加功能后,它看起来像这样:
master: history ?
deployment: ?? deployment-config
mirror: ?? mirror-config ?? feature
Run Code Online (Sandbox Code Playgroud)
现在,要将功能移回母版,我首先必须在mirror分支中对补丁进行重新排序:
master: history ?
deployment: ?? deployment-config
mirror: ?? feature ?? mirror-config
Run Code Online (Sandbox Code Playgroud)
现在我可以将其快速合并到大师中
master: history ?? feature ?
mirror: ? ?? mirror-config
deployment: ?? deployment-config
Run Code Online (Sandbox Code Playgroud)
然后将master合并到mirror中,并将其重新部署到master上
master: history ?? feature ?
mirror: ?? mirror-config
deployment: ?? deployment-config
Run Code Online (Sandbox Code Playgroud)
是否有可以使之自动化的插件或工具,因此
在某些设置中,我习惯在本地使用git,然后导出diff,然后提交详细说明.因此,当我在本地开发时,我会不断提交,并且在提交之前不会打扰有意义的提交消息或完美测试.
但是,当使用git在github上发布代码时,我宁愿删除那些小提交的历史记录,只创建一个表示经过良好测试的逻辑更改的提交.
什么是实现这一目标的最佳方式,只要我觉得我已经探索了一条小路径(无论如何未经证实),而不改变我当地的工作流程?
我知道在提交DVCS的频率之前已经问过这个问题.所有答案都有一个共同点 - 尽可能经常.但它们通常是在完成一个思想,一个用户故事,获得编译代码或通过测试之后.我在想,鉴于DVCS为您提供了自己的存储库,提交非常便宜,在每次更改文件后提交都没有意义吗?毕竟,这就是NetBeans中发生的事情,你得到一个很好的免费"时间机器",甚至没有要求它.如果不是每次改变,那么至少每次保存或编译.
这是否有意义,或者我对DVCS有错误的想法.我的感觉是,这不是大多数人使用DVCS的工作流程.