如何在现有头的基础上添加一个回购的头

  • 本文关键字:一个 基础上 添加 git
  • 更新时间 :
  • 英文 :


我有两个存储库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分支应该相同。

这样做对吗?(我不能冒险先尝试一下,然后意识到它错了!!(

  1. git克隆repo2.git repo2&cd$_
  2. git远程添加上游repo1.git
  3. git获取上游
  4. git rebase上游/主
  5. git-push原点master--force

首先,即使您显示"h1";在两个repo中,当你完成时,要意识到提交ID将不同。。。

我觉得实现你要求的最简单的方法是在两个repo中签出master,然后将文件从repo1复制到repo2。然后在repo2上提交给master。

话虽如此,这似乎是一件奇怪的事情。我想知道,如果你想让文件系统实际上不反映任何这些更改,为什么要在repo2中维护master的历史记录?一旦你"替换";在repo2中使用repo1中的master,您将撤消要跟踪历史记录的任何更改。此外,同一文件的ID不同,你的转发总是不同步的。我想知道你是否最好恢复master上的更改,然后合并回master,然后在合并提交到位的情况下同步两个repo。这样,你的历史记录仍然保持不变,两个回购都是一样的,以防你将来想再次这样做。

相关内容

最新更新