ith*_*hil 5 git version-control workflow
我们是一个由5个开发人员组成的小组。我们刚从Subversion迁移到Git,却找不到适合我们的正确工作流程。
我们在成功的git分支模型文章之后尝试从一开始就坚持使用gitflow工作流程,但坦率地说,对于我们正在从事的小型项目来说似乎有些不知所措,并且严格遵循它与我们所使用的subversion模型的不同,我们中的某些人很难遵循过去。
因此,尽管我们确实保持母版的清洁,但现在看来我们并没有使用发布分支来发布版本,因为这似乎没有必要。同样,我们不使用功能分支,而是直接开发。
我不确定版本,但我觉得我们应该使用功能分支,只是我不知道如何使用它们。在提到的文章以及我们已经阅读的其他文章中,建议将功能部件保留在本地,并在将它们合并回开发之前将其压入其中。如果只有一个开发人员正在使用该功能,这看起来很容易,但是我们的情况是,任何时候任何人都可能希望/需要将项目保持在当前状态并继续进行。因此,项目易手,即使尚未完成,所有工作也都必须推送到服务器,因此任何人都可以拉动它并继续工作。
因此,由于我们在偏远地区进行所有工作,因此很难保持整洁,我们的历史是一小部分小型提交的清单,但是据我所知,我们无法压榨它们或改组任何分支机构,因为这将改变公共历史。
我们想做正确的事,但不要比必要的事复杂。那么关于哪种工作流程最适合我们的任何想法以及如何正确实施呢?
您可以继续处理具有小提交的功能分支,并且在合并回分支之前仅rebase使用和/或它们。从那时起,功能分支就没有任何相关性,因此弄乱其历史不一定是问题。squashdevelop
它解决了您不通过小提交“污染”历史的问题。这种方法的唯一问题是您不会经常更新功能分支,因此最终会进行更大的合并。
根据我的经验,最好的方法是使用功能切换来实现非常短的生命周期功能分支。通过这种方式,您可以合并回不完整但未损坏的功能分支,从而消除巨大的合并困难。
拥有真实的提交历史并不坏。它有助于审查,并在必要时更容易进行挑选,并且还有助于合并。你的 master 应该保持干净:每个版本一次提交。开发可能有点不那么干净,每个功能/票据分支都有一个提交。但是,您的功能分支可以正确包含历史记录。
另外,如果您确实想让提交图更容易理解,您可以经常重新建立基础而不是开发并推送它。不建议改变公共历史,因为如果不是每个人都意识到这一点,可能会导致问题。然而,如果一次只有一个或几个开发人员在同一个分支上工作,只要在该特定分支上工作的每个人都知道变基(它可以是一项预定的事情,或者你每次都做的事情),这是可以接受的开发分支更新后的时间)