相关疑难解决方法(0)

组合多个git存储库

假设我的设置看起来很像

phd/code/
phd/figures/
phd/thesis/
Run Code Online (Sandbox Code Playgroud)

由于历史原因,这些都有自己的git存储库.但我想将它们合并为一个,以简化一些事情.例如,现在我可能会进行两组更改,并且必须执行类似的操作

cd phd/code
git commit 
cd ../figures
git commit
Run Code Online (Sandbox Code Playgroud)

表演(现在)很棒

cd phd
git commit
Run Code Online (Sandbox Code Playgroud)

似乎有几种方法可以使用子模块或从我的子存储库中提取,但这比我正在寻找的要复杂一些.至少,我很高兴

cd phd
git init
git add [[everything that's already in my other repositories]]
Run Code Online (Sandbox Code Playgroud)

但这似乎不是一个单行.有什么git可以帮助我吗?

git

203
推荐指数
8
解决办法
7万
查看次数

如何组合两个不相关的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 ×2

git-rebase ×1