我们最近从 Team Foundation Version Control 切换到 git。我发现我们的开发团队有一种倾向,希望从本地 master 中创建一个本地分支,将其称为 local-dev,然后永远使用该分支。我们正在使用 pull 请求流程,因此他们将本地开发推送到服务器上,并向主服务器执行 pull 请求。
当 pull 请求完成时,他们删除 server-dev 分支,但保留其 local-dev 分支。他们只是将最新版本 pull 入本地 master,然后将本地 master merge 到 local-dev 中。然后重复这个循环。
这是一件可以做的事情吗?在我的脑海中,我看到由于他们的本地开发永远不会被重新设置基础,所以每次他们发出 pull 请求时,他们都会不断地将自第一天以来的所有历史记录推送到服务器上,并强制服务器处理该 merge 。这似乎工作正常。
这是一颗定时炸弹吗?这是完全可以接受的并且我什么都不担心吗?服务器正在做什么来处理此 merge ?
最佳答案
Git 使用修订行走来协商双方的一组通用提交。因此,如果在推送期间,客户端知道服务器的 master
分支是什么,那么它将能够消除发送其中包含的任何内容,包括旧版本的 local- dev
分支。
正在使用的工作流程对于推送来说不一定效率低下,但是 master
和 local-dev
分支之间重复的纵横交错 merge 会使 git log --topo-order
非常慢。因此,虽然对于没有经验的 Git 用户来说这可能不是问题,但它会让高级用户有点不高兴,因为它会导致高级操作变慢。它还创造了一段不整洁的历史,一些人对此有强烈的感受。
此外,此工作流程可防止同时运行多个分支。开发人员可能需要等待 merge 分支,因为主题专家正在休假,无法进行审核,而创建新分支将允许在等待审核期间处理不同的工作。
典型的工作流程是为有问题的功能或错误修复创建一个新的、唯一命名的分支,进行更改,然后将其推送。当服务器分支 merge 时,本地分支可以被丢弃(或者如果用户愿意则可以保留)。
所以最终的答案是,这不是一个典型的工作流程,它会导致一些实际问题,但问题并不大。教育您的用户不是问题,但您是否认为这足够重要并在政策中强制执行,这取决于您。
关于git - 可以永远使用同一个本地分支吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60049232/