我分叉了一个GitHub项目,在开发分支中做了一些更改,并提交了一个pull-request。项目业主说他将在一两周内合并我的变更,但从那以后,两个月过去了。与此同时,我想在研究论文中使用它们,以便向全世界提供我的更改。
我想将我的开发分支合并到我的fork中的主分支中,以便人们可以通过我的分支使用更改; 但是,我还希望项目所有者能够最终将我的更改合并到主叉中。
这可能吗?
答案 0 :(得分:1)
当然是 - 只要去你的主人,与你的开发合并,就不会有任何问题。
您发送了拉取请求的事实不会从您的存储库或您的分支机构的角度更改任何内容。你仍然可以随心所欲地做任何事情。
首先,您的存储库及其存储库是单独的。无论你做什么都不会反映他的,反之亦然。仅这一点就意味着无论你(他)将变化合并到主人(或者在开发中创造新的 *)都不会影响另一个人的回购。此外,您发送的拉取请求将保留在那里,不变, *),直到他对其执行操作为止。
如果他合并了拉取请求,您的存储库就不会注意到这一点。它将保持不变,直到你与他的'父'回购同步( - > PULL)。
同样,他的回购也不会注意到你在进行合并。事实上,在你这样做之后,他可以与你的版本同步,就像你在发布新提交时可以与他同步一样。在Git中没有'父级'和'子级'存储库,都是相同的,所以对于Git和push / pull / etc操作,在任何方向上同步都没有问题。
此外,如果您现在进行合并,并且他忽略了它,然后他做了一些更改,那么经过一段时间后他决定合并你的补丁 - 你将能够与他的回购同步以获得最新的变化(反之亦然)。这是因为Git记得与什么合并了什么,并且会注意到你之前已经合并了当前的更改。
如果你不得不等待他做任何事情,“分布式源控制系统”会有什么意义?
当然,如果你们两个人合并的时间点差异很大,那么当你与另一方同步时,你(他)可能会遇到一些冲突,但是,任何合并最终都会产生一些冲突。
*)一个警告:Pull-Request会跟踪您的存储库。如果你从你的开发中发送PR,你不应该在需要之前保持你的发展不变。这是因为( - > How to update a pull request)如果您向devel分支提交任何新内容,GitHub的PullRequest将认为这是一个更新,PR也会使用这个新提交更新自己。因此,通过从devel发送PR,您基本上会锁定您的开发,直到PR解决。这就是为什么你应该做一些其他的分支,即important-fixes-may-2017
(是的,这是一个非常糟糕的名字),等于你的开发,并从那个分支做出PR。这样,PR就可以观察到这个分支,你的开发可以免费使用。
但是,所有都不会改变 您的主人可以免费使用的事实。你可以签出master,与devel合并,这不会改变他的观点。您发送的Pull-Request只有在您从发起PR的分支机构提交任何内容时才会获得更新 - 即 - 如果您承诺devel
。
(目前,如果您想在不更新PR的情况下更改任何内容,只需在与开发相同的点创建一个分支devel2
并处理该分支)