我需要从不同的回购中重新设置我的git repo。并且不要将不同的repo添加为子树。不同的仓库改变了我在本地仓库中处理的相同文件。 (不要问我们为什么不在一个回购[政治]中将回购单位统一到不同的分支。)
我的回购和共同回购分别。
A-B-C-d
A-B-C-W-X-Y-Z
我的回购需要成为
A-B-C-W-X-Y-Z-d
记住它是一个不同的回购,而不仅仅是一个不同的分支。我追求的策略是通过这些命令从公共仓库添加一个分支到我的仓库
远程添加common-repo ssh:/ path / to / common / repo
然后我在我的" git remote -v"中看到了共同的回购。命令。但我在我的" git branch -v"中看不到它。命令。如果我可以将其转换为分支,执行rebase / merge,然后删除分支或从不推动分支,那么我将从该共同仓库重新设置我的仓库。
当然,我希望我自己的回购保留共同回购所拥有的所有历史记录,而不是折叠合并。
答案 0 :(得分:1)
我假设有一个共同的父母,因为你曾经使用过两次字母,我认为你可以通过将第二个回购添加为另一个远程来实现这个目标
git remote add second_origin URL
然后获取第二个远程
git fetch second_origin
然后进行rebase
#assuming you are on origin/master
git rebase second_origin/master master
我不确定这会起作用,但对我而言,它似乎在逻辑上是正确的,请记住,如果整个底板变得疯狂并且你发现自己陷入困境,你可以随时运行git rebase --abort
答案 1 :(得分:0)
要查看远程分支,您应该使用以下方法之一:
git branch -a
git branch -r
而不是
git branch -v
一旦你可以看到,例如,分支遥控器/ origin / master,那么,在你应该这样做的基础上重新设置你的主分支:
git checkout master
git rebase origin/master
答案 2 :(得分:0)
我假设提交a,b和c相同但不相同。在这种情况下,您只需从其他仓库中取货
git fetch otherrepo
然后你将你的工作重新定位到最后一个公共部分c
git rebase --onto otherrepo/c ^myrepo/d myrepo/d
因为它是一次提交,在这种情况下,樱桃选择会做
git checkout otherrepo/c
git cherry-pick myrepo/d
用您创建的分支替换repo / commit标记以表示它们。以上将更容易处理。
如果你打算以这种方式使用这个其他仓库,我会建议你合并并启用rerere,因为你将永远无法发布你的合并,并且你身边的合并将变得越来越复杂。 Rerere将允许您快速执行此操作,因为将来会记住任何冲突解决方案。