相关疑难解决方法(0)

如何将一个Git存储库重新绑定到另一个存储库?

我有一个Git存储库(A),它包含项目的开发直到某一点.然后我丢失了这个回购A打开的USB记忆棒.幸运的是,我有一个最新提交的备份,所以我可以稍后创建一个新的存储库(B),我导入最新项目的状态并继续开发.现在我恢复了丢失的USB记忆棒,所以我有两个Git存储库.

我想我不得不以某种方式将回购B重新命名为回购A,但我不知道如何做到这一点,也许使用fetch/pull和rebase?

git merge repository rebase

55
推荐指数
3
解决办法
2万
查看次数

如何组合两个不相关的git存储库,保留历史

我不太了解git.: - /

背景

我有两个不相关的基于git的文档存储库,我想将它们合并到一个存储库中.我想保留原始时间戳(可追溯到2005年)和单个文件历史记录.这两个repos不包含分支,没有文件夹,并且在文件命名方面没有重叠.

在ASCII-land中,它看起来像这样:

REPO A    |-------------------------|
REPO B                    |===============|
Run Code Online (Sandbox Code Playgroud)

重叠表示时间.

目标

我的目标是"拉上"重叠的时间戳,以便两个回购看起来像一个完整的历史记录:

REPO A+B  |-------------------==--=---============|
Run Code Online (Sandbox Code Playgroud)

我试过的

再一次,我不太了解git,所以我可以把事搞砸了.

首先,我尝试将较新的较小的repo添加为较大的旧repo的远程,获取更改并提交结果.在旧的回购后,我结束了所有新的回购变更集中在一个分支:

MERGE  |-------------------------                 -|
                                 \===============/
Run Code Online (Sandbox Code Playgroud)

接下来我尝试了rebasing(with --committer-date-is-author-date),我认为它可以工作,但最后我得到一个长的提交历史,只是将两个repos堆叠在一起.

REBASE |-------------------------===============|
Run Code Online (Sandbox Code Playgroud)

我无法找到一种"重播"组合历史的方法.我真的希望rebase能成为答案.

我看过的答案

git git-rebase

9
推荐指数
2
解决办法
2607
查看次数

如何将一个git历史追加到另一个?

我有一个存储库,其中包含不再使用的旧版网站的代码master.该站点在一个新的存储库中完全重新设计,该存储库中的代码和历史记录被复制到旧站点的repo中的一个分支中,让我们调用它new_site.我无法合并new_sitemaster,因为历史是完全不同的.

我已经调查过两个子模块和子树合并了一下,但是当你试图保持代码来自另一个项目的子目录中包含的一个项目时,两者似乎只是相关的,而不是当你想要在两个工作树之上粘贴两个工作树时彼此.

此时,我希望将旧代码保留在原来的位置,并将其添加new_site到当前HEAD的顶部.任何想法我怎么能做到这一点,或替代建议清理这个烂摊子而不吹走旧代码?

git git-submodules git-subtree

6
推荐指数
1
解决办法
405
查看次数