![](/img/trans.png)
[英]Git branching: master vs. origin/master vs. remotes/origin/master
[英]Git - branching vs multiple remotes
我对git及其最佳做法还很陌生。 遇到此示例时,我正在阅读文档:
$ cd grit
$ git remote -v
bakkdoor https://github.com/bakkdoor/grit (fetch)
bakkdoor https://github.com/bakkdoor/grit (push)
cho45 https://github.com/cho45/grit (fetch)
cho45 https://github.com/cho45/grit (push)
defunkt https://github.com/defunkt/grit (fetch)
defunkt https://github.com/defunkt/grit (push)
koke git://github.com/koke/grit.git (fetch)
koke git://github.com/koke/grit.git (push)
origin git@github.com:mojombo/grit.git (fetch)
origin git@github.com:mojombo/grit.git (push)
该文件继续提到:
这意味着我们可以轻松地从这些用户中提取任何一个。 尽管我们在这里不能告诉我们,但我们可能还有权推送其中一个或多个。
在单独的远程存储库中拥有同一代码库的多个副本对我(或团队)的好处是什么,执行此操作与为每个人仅创建一个单独的分支之间有什么区别(无论如何这都是很差的做法,但是有单独的仓库似乎更糟)?
您必须了解,每个克隆都已经拥有自己的一组分支。 所以bakkdoor/master
和cho45/master
是两个不同的分支。 它们可能具有相同的本地名称( master
),并且可能具有相同的远程跟踪分支( origin/master
,它们都推送到origin
remote),但是它们仍然是需要单独管理的独立分支。
如此有效,通过使用多个存储库,您只是在本地更远的级别上进行分支。 但是技术基本相同。
当然,您实际上在谈论的是团队使用的分布式工作流 。 经典的一种是集中式工作流程,其中每个人都可以访问一个中间有祝福的存储库。 这适用于知道他们在做什么的团队。 每个人都应该推动正确的事情,并且在组织良好的团队中,这非常有效。
对于开源项目,通用的工作流程是“集成管理器工作流程”。 数量有限的开发人员具有对受祝福存储库的写访问权。 期望开发人员将他们提出的更改发布到其他地方(通常在他们自己的公共存储库中),然后提出拉取请求以将这些合并到一起。最大的好处是,这对每种类型的团队都适用:因为访问中央存储库非常方便有限,没有人能够把那个弄乱。 开发人员,甚至是不受信任的开发人员,也可以将自己的更改发布到自己的公共存储库中-如果他们搞砸了,那就是他们的存储库,他们可以做任何想要的事情。
另一个好处是,这可以更清晰地了解项目的“经典”。 开发人员可以在自己的存储库中进行实验并更改所有内容,而不会影响中央存储库中的其他对象。 所以有更多的自由。 当然,您也可以使用名称明确的分支机构名称和一支优秀的团队来执行此操作,但这要困难得多。 很多时候,人们会回过头去看看这个工作流程,因为它工作的很好,尤其是在GitHub上,它还是一个以请求请求为中心的平台。
我看到的唯一好处是,您可以通过拉同伴的存储库来跟踪同伴的工作。
但是很快它将变得一团糟。
最常见的工作流程是使用分支。
通常,团队成员在使用功能时不需要不断推动更改。
仅在以下情况下才需要:
在功能分支上完成工作后,您可以将其合并到主(主)分支。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.