Git:克隆的克隆上的远程分支可用性

Git:克隆的克隆上的远程分支可用性,git,git-remote,git-flow,Git,Git Remote,Git Flow,所以我对Git还很陌生。我已经在本地使用了一段时间,但从未用于分布式团队协作的预期目的 背景: 最近,我公司的外部开发人员开始推动我自己和我公司的另一名员工,他们对我们的网站进行了一些小改动,开始提交回购协议。他们使用git流工作流 计划流程: 我的公司在流程和控制方面非常强大,所以我们的IT部门有一个人,如果你愿意的话,他将扮演“守门员”的角色。他克隆了一份开发商回购协议的副本到我们的网络,雇员2号,然后我从守门员的克隆中克隆。员工2和我永远不会直接去开发商的回购。我检查了看门人的克隆,他有我

所以我对Git还很陌生。我已经在本地使用了一段时间,但从未用于分布式团队协作的预期目的

背景: 最近,我公司的外部开发人员开始推动我自己和我公司的另一名员工,他们对我们的网站进行了一些小改动,开始提交回购协议。他们使用git流工作流

计划流程: 我的公司在流程和控制方面非常强大,所以我们的IT部门有一个人,如果你愿意的话,他将扮演“守门员”的角色。他克隆了一份开发商回购协议的副本到我们的网络,雇员2号,然后我从守门员的克隆中克隆。员工2和我永远不会直接去开发商的回购。我检查了看门人的克隆,他有我们开发人员回购的所有跟踪分支。我的克隆人没有任何追踪分支。要获得跟踪分支机构,他是否必须检查我们需要的所有分支机构,然后让我和员工2进行取货?将我们的分支机构纳入他的(门卫)分支机构和他们的(开发人员)分支机构可能会有问题

下面是计划过程的一个小ASCII图:

   Developer repo
         |
         |
 Company "Gate keeper"
        / \
       /   \
      /     \
     me     employee #2
似乎如果我没有合适的开发分支来创建特性分支,它就会把事情搞砸

对不起,时间太长了,谢谢你的帮助

tl;dr从克隆的克隆开始工作,但没有原始克隆的所有远程跟踪分支,如何获取它们以及潜在的问题是什么?

您和#2将使用网关守卫repo作为远程,并从中获取。当您这样做的时候,您将只获得Gatekeeper的本地分支的状态,以及它们当前各自的提交状态

因此,Gatekeeper需要
git拉动相关分支,以从开发人员回购中获得最新的变更。然后您可以从Gatekeeper获取最新的更改

这对我来说似乎不太方便,因为这取决于看门人定期拉动,这样你才能拉动。还有,如果有他不喜欢的变化,守门员应该怎么做<代码>git还原

一个可能比您的工作流程更好的选择是。守门人可以是集成经理,而您、2和开发人员可以是贡献者


什么是最好的在很大程度上取决于看门人的角色。他负责代码,还是由开发人员负责?

我想说,一般来说,这是一种糟糕的做法,除非守门员和你们两个是唯一在存储库上工作的开发人员。Git的优势之一是保持本地功能分支,通过合并主分支(Git flow中的开发分支)的最新更改,您可以轻松地保持这些分支的最新状态

假设您有一个开发时间很长的功能分支,比如说2周。如果开发分支经常被其他开发人员推送到,而守门人不经常更新他的存储库,那么在尝试合并该分支时,您会遇到很多冲突。如果幸运的话,这将是守门员在试图将其合并到主存储库时最头疼的问题

您的主存储库托管在哪里?对于托管在例如Bitbucket或Github上的存储库,更好的方法是为您提供对存储库的读取访问权,这样您就可以对其进行分叉。然后,您可以分叉存储库,提交到您自己的存储库副本,然后将请求拉到主存储库。通过这种方式,您可以使您的fork保持最新(以及您的本地工作区),而网关守护者和其他人可以在代码合并到主存储库之前对其进行检查

然后,设置将如下所示

-------------------           -------------------------------
| Main repository |           | Your forked repository      |
-------------------           | (Main repository as remote) |
Gatekeeper can read/write     -------------------------------
You can read                  You have read/write access
                              You can fetch/pull the latest changes from main
                              You can push your commits
现在,您可以轻松地获取/拉取对分叉存储库的最新更改,并启动该存储库的功能分支。如果主存储库已更新,则始终可以获取/提取更改并将其合并到功能分支中

你的本地特色分支结束了吗?将整个分支推送到您的分叉存储库,然后对主存储库执行拉取请求,然后可以对主存储库进行审核、合并或拒绝


<>这会节省公司时间,也会给你和其他开发人员带来很多麻烦。

< P>假定承包商的回购是类似的(裸露的)和DMZ的,我会考虑在每个推送的挂钩中互相推动。为了防止在公司间边界发现推送冲突,dmz回购协议中的每个分支只能由一家公司或另一家公司更新。

开发人员100%负责代码。事实上,现在我们正在学习ropes开发人员希望我们在他们选择的git托管平台上使用合并请求。把关人只是为了在适当的地方有一些控制。守门人甚至不会对我们的代码拥有正式的否决权,他只是为了给开发者提供一个单一的推送源。我喜欢这种方法,不幸的是,我不相信代码库有分叉。