我们最近才刚开始使用Git(以前使用Subversion),我发现工作流发生了变化,可以帮助您解决问题,而无需锁定。它利用了git的设计方式以及分支的简易性。
基本上,它归结为推送到非主分支,对该分支进行检查,然后合并到主分支(或目标分支中的任意一个)。
git是“预期”使用的方式,每个开发人员都会发布自己的公共存储库,并要求其他人从中获取。我发现Subversion用户对此有麻烦。因此,我们改为在中央存储库中推送分支树,每个用户都有自己的分支树。例如,这样的层次结构可能会起作用:
users/a/feature1
users/a/feature2
users/b/feature3
teams/d/featurey
随意使用您自己的结构。注意,我还显示了主题分支,另一个常见的git成语。
然后在本地回购中为用户a:
feature1
feature2
并将其发送到中央服务器(来源):
git push origin feature1:users/a/feature1
(这可以通过更改配置来简化)
无论如何,一旦对feature1进行了审核(无论是谁负责)(在我们的情况下,是功能的开发者,您可能只有一个用户负责合并到母版),然后执行以下操作:
git checkout master
git pull
git merge users/name/feature1
git push
提取将进行提取(将任何新的主更改和功能分支拉出),并将更新主更新为中央存储库所具有的内容。如果用户a做好了工作并正确跟踪了母版,则合并应该没有问题。
所有这一切意味着,即使用户或远程团队对二进制资源进行了更改,也要先对其进行审核,然后再将其合并到master分支中。并且有明确的描述(基于过程)是什么时候进入master分支的。
您还可以使用git hooks以编程方式强制执行此方面的操作,但是同样,我还没有使用过它们,因此无法对其进行说明。