git - 可以永远使用同一个本地分支吗

标签 git merge rebase pull-request

我们最近从 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 分支。

正在使用的工作流程对于推送来说不一定效率低下,但是 masterlocal-dev 分支之间重复的纵横交错 merge 会使 git log --topo-order 非常慢。因此,虽然对于没有经验的 Git 用户来说这可能不是问题,但它会让高级用户有点不高兴,因为它会导致高级操作变慢。它还创造了一段不整洁的历史,一些人对此有强烈的感受。

此外,此工作流程可防止同时运行多个分支。开发人员可能需要等待 merge 分支,因为主题专家正在休假,无法进行审核,而创建新分支将允许在等待审核期间处理不同的工作。

典型的工作流程是为有问题的功能或错误修复创建一个新的、唯一命名的分支,进行更改,然后将其推送。当服务器分支 merge 时,本地分支可以被丢弃(或者如果用户愿意则可以保留)。

所以最终的答案是,这不是一个典型的工作流程,它会导致一些实际问题,但问题并不大。教育您的用户不是问题,但您是否认为这足够重要并在政策中强制执行,这取决于您。

关于git - 可以永远使用同一个本地分支吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60049232/

相关文章:

git - 从多个分支 rebase

java - 如何通过我的代码(pom.xml) 或命令提示符设置我的 Maven setting.xml

git - InstallShield 项目中的哪些文件需要保留在源代码管理中?

git - 如何抑制确认 "Launch ' $difftool' [Y/n] :"iff (if and only if) a specific file is passed to git difftool?

GIT:我可以在 merge 到 master 的同时维护一个正在进行的开发分支吗?

git - 重新确定所有未 merge 提交的基础

Git Reset --hard 不要删除 git merge 错误

git - 微调gitk编码

r - 在多个条件下合并 R 中的数据库,缺失值 (NA) 遍布各处

c# - 合并 XPS 文件将打开的文件句柄留给文档引用