当然可以 - 只需前往您的主分支,与您的开发分支合并,就不会有任何问题。
从您的存储库或分支的角度来看,您发送拉取请求并不改变任何情况。您仍然可以在自己的一侧进行任何操作。
首先,您的存储库和他的存储库是分开的。您在自己的存储库中所做的任何操作都不会反映在他的存储库中,反之亦然。这意味着无论您(他)是否将更改合并到主分支(或在开发分支上进行新更改)*),都不会影响另一个人的存储库。此外,您发送的拉取请求将保持不变 *),直到他对其进行处理。
如果他合并了拉取请求,则您的存储库将不会注意到。它将保持不变,直到您将其与他的“父”存储库同步(->PULL)。
同样,他的存储库也不会注意到您执行合并的操作。实际上,在您执行此操作后,他可以与您的版本同步,就像在他发布新提交时您可以与他同步一样。在Git中,没有“父”和“子”存储库,所有存储库都是平等的,因此对于Git和推送/拉取等操作,在任何方向上同步都没有问题。
此外,如果您现在进行合并,他忽略了它,然后他做了一些更改,然后在一段时间后他决定合并您的补丁-您仍将能够与他的存储库同步以获取最新的更改(反之亦然)。这是因为Git记住了已经合并了什么,会注意到您已经将当前更改合并到了较早之前。
如果您必须等待他在他的一侧执行任何操作,那么“分布式源代码控制系统”的意义何在?
当然,如果您和对方进行合并的时间点大不相同,您(他)在与另一方同步时可能会遇到一些冲突,但是,好吧,任何合并都可能会有一些冲突。
*) 注意:Pull-Request会追踪您的存储库。如果您从devel发送了PR,则不应在需要之前更改devel。这是因为(-> 如何更新拉取请求),如果您向devel分支提交任何新内容,GitHub的PullRequest将假定这是一个更新,并且PR也将使用此新提交进行更新。因此,通过从devel发送PR,您基本上锁定了您的devel,直到PR解决为止。这就是为什么您应该创建一些其他分支,例如important-fixes-may-2017
(是的,那是一个非常糟糕的名称),与您的devel相等,并从该分支发出PR。这样,该分支将被PR观察,您的devel将可以自由玩耍。
然而,所有这些并不改变您的主分支可以自由玩耍的事实。您可以检出master,与devel合并,这不会从他的角度改变任何东西。您发送的那个Pull-Request只有在您提交到原始PR的分支(即devel)时才会更新 - 如果您提交到devel
。
(暂时而言,如果你想在不更新PR的情况下进行更多修改,只需在与devel相同的位置创建一个名为devel2
的分支并在该分支上工作)