How to Do a Complicated Git Repository Merger?
我想合并以下Github存储库:
- AOSM/OBJC4标准
- 苹果FOSS镜子/OBJC4
- BAVARY/OBJC4型
- 辰尼亚克/OBJC4-551.1
- J4N0/OBJC4-532型
- 杰斯旺/OBJC4-532
- macmade/objc4-437.1-运行时
- 开源苹果/objc4
- 罗伯特沃伊塔/OBJC4
在这样做的过程中,我想让这次合并看起来像罗伯特沃伊塔/objc4,就其提交、发布、标签等的组织方式而言。这可能吗?如果可能,我该怎么做?我假设我不能一次将所有的存储库合并在一起;那么,我应该按照什么顺序合并所讨论的存储库;我应该如何执行每次合并,以便最终获得所需的结果?
P. S.:
好吧,我已经开始尝试合并所有这些存储库了,但是看起来Macmade/objc4-437.1-runtime是第一个存储库,我认为我必须合并到我的目标存储库randomdsddevel/objc4中,因为这个源存储库包含Githu上最早版本的objective-c文件B,合并可能有点困难。你看,macmade/objc4-437.1-runtime包含了如果你去苹果的开源网站,在"os x"栏下查找"10.6",点击"披露三角形"显示这个父项的子项,点击"10.6.2"到"10.6.7"子列表部分的任何链接,向下滚动找到"objc4-437.1",道指。卸载源代码,转到保存此下载的任何位置,删除除"运行时"文件夹以外的所有内容,将其内容提取到其所在的任何位置,删除(现在为空)的"运行时"文件夹,并将生成的文件夹放入Github存储库。
无论如何,其他包含Objective-C源代码的Github存储库都没有经历过这种lobotomy,这意味着我需要进行它,以便我可以合并(randomdsddevel的)"objc4"存储库的一个分支的内容,我创建它来跟踪macmade的"objc4-437.1-runtime"存储库到我(rando)的"runtime"文件夹中。MDSDevel的"objc4"存储库的"master"分支。到目前为止,我已经找到了几种不同的策略,可以用来将我的(randomdsddevel's)"objc4"存储库的"macmade"分支合并到这个存储库的"master"分支中。其中大部分在这个堆栈溢出问题及其答案中进行了描述。该问题的第一条评论还提到,在围绕这个堆栈溢出问题的讨论内容中可能会找到其他解决方案,并且该问题的答案之一是最初提出该问题的人引用了Linus Torvalds的"有史以来最酷的合并"。
我应该使用这些策略中的哪一个将Macmade的"objc4-437.1-runtime"存储库的(randomdsddevel的)镜像合并到我的(randomdsddevel的)"objc4"存储库的"master"分支中,以便前者的内容最终出现在后者的"runtime"文件夹中?有人能带我一步一步走过这个吗?不过,在那之后,我可能只需要合并我最初提到的所有其他存储库,在合并的基础上,我希望得到帮助,从最小到最大的版本,正如mudassir razvi最初在他对这个问题的原始答案中建议的那样。
无论如何!您可以从所有存储库(顺序无关紧要)中签出RandomDSdevel/robertvojta_objc4、add所有其他存储库,如remotes、fetch,以及merge任何您需要的,无论您需要的地方!
一个更明智的方法是对add one repo as remote、fetch、merge、add another和repeat cycle,以避免混淆!
更新-1
如果您只想要内容:a.创建Git存储库在新的空repo中,将每个存储库添加到文件夹中,并一次提交一个。
如果你想要他们的历史:A.创建一个空的repo,将所有存储库添加为子模块。B.然后参考这个。
- 好吧,我可以合并所有包含Objective-C v4r551.1的存储库,但在将Robertvojta_Objc4恢复为早期提交时遇到了困难,以便将我上面提到的那些包含早于v4r551.1的Objective-C版本的存储库合并到这些存储库中。R承诺维护所有分支机构的历史。我应该重新开始并从最早的版本合并到最新的版本吗?
- @兰多姆德德维尔,这就是你要做的!:)
- 好吧,那我试试看怎么样。不过,我还有一个问题:我如何处理将randomdsddevel/macmade_objc4-437.1-runtime合并到另一个存储库的"EDOCX1"(0)文件夹中?另外,我应该从我的forks还是从原始存储库工作?
- 我似乎无法恢复合并所有这些存储库的第一次尝试,所以我将再试一次,但这次从原始存储库开始工作,并将结果放在我的单个存储库中。
- 我希望你在福克斯公司工作,不要把原件放在一边,这样如果你搞砸了,他们可以来救你。关于你的运行时问题,我不太明白。:)
- 我的意思是,当我说我想知道我是应该从forks还是originals工作时,我的意思是,我想知道我是应该在把原件制作成一个新的存储库之前,先把它们分叉,还是仅仅把原件用作我的远程存储库。至于我问的关于runtime文件夹的问题,我试图问我如何将madmake的objective-c 437.1存储库合并到我提到的其他存储库中,即使它只包含其他存储库的runtime文件夹的内容。
- 本质上,我认为我需要做的第一个合并可能是我将在master/runtime将macmade移植到master中,从而将macmade与master合并,以便我能够在此基础上完成所有其他合并。问题是我不知道该怎么做!
- 这个堆栈溢出问题讨论了如何将一个Git存储库合并到另一个Git存储库的子文件夹中,但我需要帮助理解它及其链接的页面!
- 有人能帮我做上面的工作吗?这样我就可以执行我的第一个仓库合并序列了。
- (at)Mudassir Razvi:如果你对所有的评论都感到困惑,我已经用一个附言更新了我上面的原始问题,可能对你有所澄清。
- @Mudassirrasvi:查看最后一条评论;'@'在我试图将其与名为的、其中有空间的用户版本一起使用时行为不正常…
- 你好?有人在家吗?
- 诅咒我的运气;除了最初试图回答我问题的人之外,没有人,甚至没有人,似乎在家里!
- @很抱歉我出去了。帮助我理解一件事,如果我是对的,你想要你列在一个分支上的所有存储库的所有内容,对吗?(还需要所有分支的完整历史记录吗?)
- 对!这正是我想要的!你能帮我弄明白怎么做到吗?
- 我问了两个不同的问题。:(如果你只想要内容,那么很容易,但是如果你想要完整的历史,那么很难。:(
- 对不起,我以为我对你的两个问题都说了"是"。不管怎样,这会有多棘手?
- 实际上,我在谷歌上搜索了如何将子模块合并到它们的父存储库中,发现这对于我来说可能是一个更好的方法,它可以更好地替代你在回答中提到的过程。
- 尝试遵循我提到的指导,并不断得到这里讨论的错误。这有点烦人,你知道吗?事实上,我应该按照你给我的指示去做吗?
- 我已经把更多关于这个第一次合并到堆栈溢出问题中遇到的问题的信息放在这里。谢天谢地,在这个初始合并之后,我不需要处理子模块!
- @穆达西拉斯维:不过,第一步我还是有困难……你认为你能帮我吗?
- @穆达西拉西:有人回答了我提到的另一个问题,所以我现在应该能够克服这一困境。
- @修正:有人正在回答我的另一个问题。(呵呵……)
- @Mudassirrasvi:我已经成功地完成了第一个合并操作,这是这个更复杂的合并操作的一部分!现在我只需要做其余的事情;谢天谢地,这将很容易,因为我不必去麻烦乱弄目录树。
- @Mudassirrasvi:好吧,我已经决定用你建议的分叉重新做我刚才做的,但是现在我想把我对第一个存储库的分叉所做的更改合并到它的上游存储库中,然后将该存储库合并到我的合并目标中,并且似乎无法创建一个拉拽。请求…!?!在多元宇宙里我该怎么做?
- @穆达西拉西:嗯……你在听,还是又迷路了?
- 呃……我在这方面遇到了很多麻烦,所以我要从新的"EDOCX1"(0)存储库开始。