Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Git中不使用主分支的原因_Git_Version Control_Branch_Dvcs - Fatal编程技术网

在Git中不使用主分支的原因

在Git中不使用主分支的原因,git,version-control,branch,dvcs,Git,Version Control,Branch,Dvcs,所以,我对git还比较陌生,在过去的几周里,我读了一些关于git的文章,我读到一些人说主分支不应该被改变,而是从它分支出来,然后合并到它 我很高兴能与分支机构合作,但我想知道不在主分支机构上工作的原因是什么?当双方都进行提交时——这意味着在您的本地存储库和上游,例如来自其他团队成员的提交时——可能会发生冲突。这意味着文件,特别是行,都是由这两者编辑的。在这种情况下,需要进行一些手动合并处理 master分支用于在您无法访问上游(移动使用或网络故障)时让本地分支代表上游。当有一个本地分支表示上游更

所以,我对git还比较陌生,在过去的几周里,我读了一些关于git的文章,我读到一些人说主分支不应该被改变,而是从它分支出来,然后合并到它


我很高兴能与分支机构合作,但我想知道不在主分支机构上工作的原因是什么?

当双方都进行提交时——这意味着在您的本地存储库和上游,例如来自其他团队成员的提交时——可能会发生冲突。这意味着文件,特别是行,都是由这两者编辑的。在这种情况下,需要进行一些手动合并处理


master
分支用于在您无法访问上游(移动使用或网络故障)时让本地分支代表上游。当有一个本地分支表示上游更改时,进行合并解析和其他工作要容易得多。

我想通常的理由是,主分支应该表示代码的“稳定”历史。使用分支来试验新功能,实现它们,当它们足够成熟时,您可以将它们合并回主功能

这样,master中的代码几乎总是可以毫无问题地构建,并且大多数情况下可以直接用于发布

让我们以git.git(官方git存储库)为例。有几个分支,最引人注目:

因此,
master
包含的代码很可能会在下一个git版本中结束<代码>下一步包含测试的代码,这些代码可能会合并到
分支中
pu
(建议的更新,iirc)包含非常新的(可能是)未经测试的代码

pu
被认为是不稳定的,将根据junio的喜好进行重置和重新设置<代码>下一步可能在发布后或发布周期内重置,但这种情况不太常见<代码>母版是一成不变的,在推送并公开后从未更改过

你看,如果这些变化被认为是有价值的,并且没有破坏,那么它们将从
pu
合并到
next
,从
next
合并到
master

分支
maint
用于进行错误修复,这也适用于较旧版本的git<代码>维护通常合并到
next
和/或
master


<>你可以检查

上的分支。你需要考虑的是一个DVCS(分布式版本控制系统),如Git或MyCuri,是“发布”工作流()。 当您只有分支时,您会问自己它们代表了什么样的开发工作。
如果
master
表示稳定的代码,如中的详细信息,那么是的,您需要从/merge分支到
master

但当您可以克隆/推/拉(即发布到不同的repo,其本身可能有不同的用途)时,“
master
”可以在不同的repo中扮演不同的角色

  • 开发回购协议可以有许多分支,其中
    master
    通常表示最稳定的代码
  • 部署repo只能有
    主机
    ,以及一些用于紧急修复的热修复程序维护分支
  • 本地测试回购只能有一个
    master
    分支,从push重写为push,以便通过钩子运行一些静态分析代码,钩子只监控该测试回购的所述
    master
    分支

    • 其他人提出了很好的理由,不直接在
      master
      中进行更改,我同意他们的观点。然而,总是提倡这样的工作流有时会让刚接触git的人认为它是不必要的复杂,所以我想提供一个对比


      如果您有一个人或一个非常小的团队,并且您的开发是高度线性的,即您很少一次处理一件以上的事情,并且每个功能通常在开始下一件之前完成,那么不直接使用
      master
      几乎没有什么好处。如果需要,可以随时返回并添加分支。我强烈建议您了解feature branch工作流,但如果您觉得这只是增加了额外的步骤,而没有给您买任何东西,我保证不会告诉git警察。

      不确定我的理解是否正确,我是git新手

      我认为当你有几个特性的时候,生活会变得更容易。比如说你有一个项目,在特性a上工作,然后你实现了特性B

      现在可能会发生这样的情况:您认为整个特性A是一个错误,并且您希望项目的一个版本只包含特性B,而不包含特性A。 如果一切都在掌握之中,这项任务就很棘手

      如果每个功能都在其自己的分支上,则此任务很容易: 您使用旧的主版本(没有A和B)。 你合并了B分支。
      完成。

      问题不是关于上游/下游,而是为什么我们使用功能和维护分支等。有趣的答案。我从未听说过有人使用主分支作为上游的缓存进行断开连接的合并。我不能排除拥有
      master
      和其他原因。但Wilburt不约而同地问,为什么要有一个根本不改变,只用于合并的
      master
      。当我学习Git时,有人告诉我不要碰它,它运行得很好。如果有更多的经验,例如合并,可以保存该部分。谢谢。我认为这样做的好处在于,可以在不同的分支中同时处理多个功能或错误修复,并在它们成熟时将它们合并回主分支(主干?)。@Willbert:是的,如果您来自svn,您习惯于调用主分支
      主干
      。它们非常相似,但是对于git(和任何其他分布式vcs),有许多
      m