2013-11-26 69 views
1

我需要从不同的回购仓库中重置我的git仓库。而不是添加不同的回购作为子树。不同的回购协议对我在本地回购协议中使用的相同文件进行了更改。 (不要问为什么我们不只是将回购合并到一个回购[政治]的不同分支中。)Rebase git从不同的回购仓库

我的回购和共同回购分别。

A-B-C-d

A-B-C-W-X-Y-Z

我的回购需要成为

A-B-C-W-X-Y-Z-d

记住这是一个不同的条件不只是在不同的分支。我追求的战略是一个分支,从共同回购通过这些命令添加到我的回购

远程添加共回购SSH:/路径/到/普通/回购

然后我看到在公共回购我的“git remote -v”命令。但是我没有在我的“git branch -v”命令中看到它。如果我可以把它变成一个分支,做rebase/merge,然后删除分支或永远不要推动分支,然后我将这个常见repo的回购重新分配。

当然,我想要我自己的回购保留常见回购有的所有历史记录,而不是合并的崩溃。

+0

检查了这个http://stackoverflow.com/questions/2428137/how-to -rebase-one-git-repository-to-another-one –

回答

1

我想有一个共同的父母,因为你使用的一些字母两次,我认为你可以做到这一点通过添加第二回购作为不同的远程

git remote add second_origin URL 

再取第二个远程

git fetch second_origin 

然后做底垫

#assuming you are on origin/master 
git rebase second_origin/master master 

我不知道这会工作,但对我来说,这似乎在逻辑上是正确的,并且请记住,如果整个rebase疯了,你发现你自己卡住,你总是可以运行git rebase --abort

0

要查看远程分支,你应该使用这一个:

git branch -a 
git branch -r 

,而不是

git branch -v 

一旦你可以看到,例如,分支遥控器/产地/主,那么,重新分配你的主分支,你应该这样做:

git checkout master 
git rebase origin/master 
+0

这没有奏效。这是一个: 致命的:需要一个单一的修订 无效上游远程/ jb-ia /内部 另外,我宁愿能够拉本地远程分支,然后将其从本地分支合并,以防万一我需要在本地混乱一点,使合并更容易。 –

+0

你总是合并/ rebase只涉及本地分支机构。没有其他办法可以做到这一点。 ;-)当我们谈论远程分支时,我们指的是反映远程分支状态的本地分支(即所谓的远程跟踪分支)。无论如何,你的问题是由于命令中的远程/前缀。我的错。那里不需要。编辑我的答案以反映这一点。 – elmart

+0

从我在错误信息中看到的情况来看,你的情况是:git rebase jb-ia/internal – elmart

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 

用您创建的分支替换回购/提交标记来表示它们。上述将更容易处理这种方式。

如果您打算以这种方式处理这个其他回购协议,我会建议您合并并开启rerere,因为您将永远无法发布您的合并,并且您身边的合并将变得越来越复杂。由于任何冲突解决方案将在未来被记住,雷雷将允许您尽快完成此项任务。