Git合并冲突可防止从newbs

时间:2018-03-28 22:01:18

标签: git file merge conflict

我一直在寻找这方面的帮助,但我觉得我总是听到的答案一直把责任归咎于用户。这个问题几乎就像是一个git本身的bug。为什么git甚至允许这种情况发生?

情况如下。在合并冲突期间,未正确冲突的文件最终会在暂存区域中。必须处理冲突的文件。

我有一些开发人员对git不够熟悉,他们意识到他们应该只处理冲突而不是暂存区域中的其他文件。新手git用户思维过程就是这样的。

“我不认识那些文件,那些不是我的文件,我要从暂存区域删除这些文件,只提交我知道的文件。”

结果是这个新手刚从源代码控制中删除了一堆文件。

除了培训,我们做了很多,是否有一个git钩子或其他策略,我可以用来防止这种情况。不幸的是,没有合并冲突钩子,如果有的话我可以创建一个脚本并分发它会温和地提醒用户不要从暂存区域中删除文件。

拉你可能会说的请求。当然,向经验丰富的开发者提出拉动请求会遇到这些问题。我们使用bitbucket服务器,由于某种原因,拉请求预览不会显示在此方案中将删除的所有文件。实际上创建合并预览有多复杂。

结果是糟糕的合并冲突解决方案从master中删除了许多其他人的工作。几小时或几天后我们就会发现它。我们回复,我们指责冒犯的开发者并祈祷它永远不会再发生,但必须有更好的方法。

非常感谢有关此类问题的任何建议。

2 个答案:

答案 0 :(得分:2)

您可以使用本地git钩子来检查合并提交期间工作集中的文件数量是否与您期望的数量有关(在某个误差范围内)。

这是一个预提交钩子的示例,它将检查工作集中的文件数是否在被合并的分支更改的文件的某个百分比内。

testAction() {
 this.isVisible = !this.isVisible;

 if (this.test && this.test.nativeElement) {
    setTimeout(() => this.test.nativeElement.focus(), 800);
 }
}

此方法将要求您让所有开发人员在其本地存储库上安装此挂钩。

答案 1 :(得分:1)

嗯,你的问题肯定是一个git flow问题。

我喜欢做的是与git workflow进程(https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)相关的内容,基本上一个功能分支一旦创建就永远不会合并/重新设置,除非git admin明确告知这样做 - 大部分时间是因为主要部门已经进行了一些结构性改变。

想象一下由10多名开发人员组成的团队,每个人都在从事特定任务。如果每个人每次都将主分支合并到功能中,您将面临您所描述的问题,无法解决合并冲突。

git工作流的概念是,你有一些主要开发人员知道每个人正在做什么,这将使功能分支在每个sprint结束时合并到主分支。大多数情况下,他们将能够处理冲突,如果他们不能,他们可以联系负责代码的开发人员并与他们核实。