我有两个存储库repo1和repo2,其中repo2在某个时刻是从repo1克隆而来的。现在我需要用repo1的主分支替换repo2的主分支。我想保持repo2中的历史记录完整,只需添加repo1主分支中的任何内容作为对repo2的承诺。
所以它会是这样的:
Repo2
D------E-----F (branch to keep)
/
init----A----B----C------G-----Head(h2) (master)
Repo1
init----A----B-....-Z-----Head(h1) (master)
我想要什么
D------E-----F (branch to keep)
/
init----A----B----C------G-----h2----HEAD(h1) (master)
执行此操作后,两个存储库中的master分支应该相同。
这样做对吗?(我不能冒险先尝试一下,然后意识到它错了!!(
- git克隆repo2.git repo2&;cd$_
- git远程添加上游repo1.git
- git获取上游
- git rebase上游/主
- git-push原点master--force
首先,即使您显示"h1";在两个repo中,当你完成时,要意识到提交ID将不同。。。
我觉得实现你要求的最简单的方法是在两个repo中签出master,然后将文件从repo1复制到repo2。然后在repo2上提交给master。
话虽如此,这似乎是一件奇怪的事情。我想知道,如果你想让文件系统实际上不反映任何这些更改,为什么要在repo2中维护master的历史记录?一旦你"替换";在repo2中使用repo1中的master,您将撤消要跟踪历史记录的任何更改。此外,同一文件的ID不同,你的转发总是不同步的。我想知道你是否最好恢复master上的更改,然后合并回master,然后在合并提交到位的情况下同步两个repo。这样,你的历史记录仍然保持不变,两个回购都是一样的,以防你将来想再次这样做。