【发布时间】:2019-07-18 03:09:55
【问题描述】:
我有什么
我有readmanySOquestionsaboutcombiningrepositories。我快到了,但我错过了一些东西。
我有两个存储库current-repo,它们发布和共享,old-repo 不是。我只有一个副本。他们的历史看起来像
1--2--3--4--5 <= current-repo
=
content is the same
=
old-repo => a--b--c--d--e
我想要什么
理想情况下,通过结合这两个存储库,我会得到一个具有类似历史的存储库
1. a--b--c--d--1--2--3--4--5 <= notice, duplicate old entry "e" is dropped"
我也会满足以下条件:
2. a--b--c--d--e--1--2--3--4--5 <= duplicate content in "e" and "1"
3. foo--bar--baz--buz--1--2--3--4--5 <= like #1 above, but rehashed "old" history
4. foo--bar--baz--buz--bif--1--2--3--4--5 <= like #4, but "bif" and "1" have duplicate content
我尝试过的
我可以通过
达到这一点(本地)cd ~/current-repo
git remote add -f old-repo ~/old-repo
git replace -f --graft 1 d
现在,我的理解是,此时我必须推/拉refs/replace/*。我不希望我的用户必须执行此步骤。
我看到的git graft(可能还有一些git replace)解决方案有一个git filter-branch 步骤。我试过这个,也试过git rebase-ing,但只重写了current-repo历史的哈希值。我也不想这样我不在乎 old-repo 的历史是否被重新散列。正如我所提到的,该 repo 没有发布和共享。基本上,下次我的用户执行git fetch 时,除了他们缺少的任何“新”历史记录之外,他们还会得到一堆旧历史记录。
tl;博士
我想合并两个 git 存储库,维护线性历史记录,并维护“较新”存储库的哈希值。如何使用我选择的历史记录(上图)或类似内容访问存储库?
【问题讨论】:
标签: git repository