Git 查找我的分支是否与任何远程分支冲突

Git 查找我的分支是否与任何远程分支冲突,git,conflict,git-merge,git-rebase,pull-request,Git,Conflict,Git Merge,Git Rebase,Pull Request,我们公司采用按功能划分的方法。所以每个开发人员创建一个新的分支,破解并推动服务器上的共享回购。服务器repos的post-receive钩子将触发pull请求 在我允许用户推送到服务器之前,我想检查他/她的分支是否与服务器上任何未合并的主分支发生冲突 目前,我给出了一个包含从服务器获取所有pull请求分支的固定命令,并根据每个em对开发人员分支进行重新调整,然后查找是否存在冲突 问题: 1.每个分支的重定基址/合并过程耗时 2.它不断地改变工作树 我是否做错了,或者是否有其他方法可以确定开发人员

我们公司采用按功能划分的方法。所以每个开发人员创建一个新的分支,破解并推动服务器上的共享回购。服务器repos的post-receive钩子将触发pull请求

在我允许用户推送到服务器之前,我想检查他/她的分支是否与服务器上任何未合并的主分支发生冲突

目前,我给出了一个包含从服务器获取所有pull请求分支的固定命令,并根据每个em对开发人员分支进行重新调整,然后查找是否存在冲突

问题:
1.每个分支的重定基址/合并过程耗时
2.它不断地改变工作树

我是否做错了,或者是否有其他方法可以确定开发人员分支是否会与服务器上的任何请求分支冲突

在我允许用户推送到服务器之前,我想检查他/她的分支是否与服务器上任何未合并的主分支发生冲突

在我看来,这是一个非常不正确的策略。你必须意识到,冲突是git的一个正常组成部分,它们没有什么不神圣的地方,无论你多么努力地避免它们,它们总会发生

例如,如果有两个特性,它们都用不同的代码行修改同一行号的文件,git肯定会引发冲突——这是无法避免的

现在,因为您将有这个check no conflict脚本,所以除非合并第一个分支,否则您将永远无法推送第二个分支。这完全是浪费时间和开发人员的生产力

此外,您忘记了开发人员可能会推送他们的分支,即使该分支未准备好合并,您也将无法这样做。如果两个或两个以上的开发人员在协作,他们很简单,因为他们无法推动,因为他们的分支与其他分支冲突

如果你有一个足够大的开发团队(比如说10个),有足够多的分支(比如说100个),那么在每个开发人员的每次推动下,你基本上会得到100个分支。想象一下10个开发人员一天只推进两次,您已经发现了不同开发人员之间可能存在的2000个冲突点。人们可能很容易过早地花费更多的时间解决冲突,而不是开发


那么,如何以理智的方式做到这一点呢

基本上,不要试图过早地避免未来的冲突

将其中一个分支作为参考-仅检查
主分支
分支,并确保在合并时与此完全没有冲突


每次要进行合并时,请检查与主服务器的冲突,并仅在没有冲突时进行合并。如果存在冲突,请请求/分支所有者获取更新的主节点,重新设置其分支的基础,解决冲突,然后再次推回。

明白了!此外,我没有检查“每个未合并的分支”。我只是在检查每一个umerged pull请求。另外,我检查这一点的一个用例是,如果两个人在同一个文件中更改同一行,那么他们的代码有90%的可能性是依赖的,因此我想提前告诉开发人员“老板,有人做了一些你可能想在代码中说明的事情”。不过,我还是允许开发人员推送代码!