0

让我们称原始源状态 A。

我将状态 B 通过状态 F 提交到 Repo 1。状态 B 代表状态 A 的修改版本。我犯了一个错误,即在 Repo 1 中没有提交状态 A 到 B。

在 Repo 2 中,我在 State A 中添加了原始源的副本。然后我进行了更改,使其看起来像 State B(不是 Repo 1 中的 State B,而是类似于它的东西)。然后,我手动对状态 B 进行了更改,使其看起来像回购 1 中的状态 F(不是字面意义上的状态 F,如回购 1 中的状态,而是类似的东西)。然后我从状态 F 到状态当前进行了更多更改。

我想将 Repo 1 和 Repo 2 合并到一个逻辑历史时间线中。我不希望 Repo 2 中的任何当前文件(代表旧状态)处于 Repo 1 的当前状态。

最简单的方法是什么?有什么建议吗?

4

1 回答 1

1

听起来您需要将 state 添加A为第一个 repo 的根目录。您可以在以下内容中找到执行此操作的说明:

  1. git:如何插入一个提交作为第一个,转移所有其他的?.
  2. Git:如何在第一次/初始/根提交之前添加提交?.
  3. 如何将复古提交添加到 git 存储库?.

您基本上想将状态添加A到孤立分支中的第一个 repo,然后使用rebase--root标志--onto将旧历史记录移动到A.

选项 2

而不是使用 state 创建一个孤立分支A,另一种选择是将 repo 2 硬重置为 state A,将 repo 1 添加为远程,获取 repo 1 的历史记录,然后将 repo 1s 历史记录重新设置为 state A

# In repo 2
git reset --hard A
git add remote repo1 <path-or-url-to-repo1>
git fetch repo1
git checkout <branch-with-state-A>
git rebase --onto A --root repo1/<remote-branch-with-B-through-F>
于 2013-08-12T01:26:01.347 回答