You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Repo A重新纳入Git版本控制并保留Repo B的提交历史?

解决方案:恢复Repo A的版本控制并保留Repo B的提交历史

根据你的场景,我们可以通过几个简单的步骤,让Repo A重新接入Git版本控制,同时完整保留Repo B里的提交历史(1---2),并把你后来在Repo A中做的变更(3)作为新提交追加到历史末尾:

步骤1:在Repo A中初始化Git仓库

首先进入你的Repo A目录,初始化一个新的Git仓库:

cd /path/to/your/repoA
git init

步骤2:关联Repo B作为远程仓库

因为Repo B保存着完整的历史提交,我们把它作为远程仓库添加到Repo A中(这里假设Repo B是本地仓库,如果是远程仓库的话,把路径换成对应的Git URL即可):

git remote add repoB /path/to/your/repoB

步骤3:拉取Repo B的完整提交历史

拉取Repo B的主分支历史(假设主分支名为*main*,如果是旧版本的Git可能是*master*,根据你的实际情况替换):

git pull repoB main --allow-unrelated-histories

这里加上--allow-unrelated-histories是因为Git默认会拒绝拉取没有共同祖先的仓库历史,但我们明确知道Repo B是Repo A的原始克隆,所以这个参数可以跳过这个检查。

拉取完成后,Repo A就拥有了Repo B里的所有提交历史(1---2)。

步骤4:提交Repo A的最新变更

现在Repo A的工作区是你脱离版本控制后修改的内容,我们把这些变更提交为新的历史节点:

  1. 查看当前变更状态,确认所有修改都被识别:
git status
  1. 追踪所有变更文件:
git add .
  1. 提交变更,建议写清楚提交信息方便后续追溯:
git commit -m "Apply changes made after repo A lost version control"

验证结果

提交完成后,你可以用git log查看完整的提交历史,应该会看到类似这样的结构:

commit <hash-of-commit-3> (HEAD -> main)
Author: Your Name <your-email@example.com>
Date:   [当前时间]

    Apply changes made after repo A lost version control

commit <hash-of-commit-2>
Author: Your Name <your-email@example.com>
Date:   [提交2的时间]

    [原来的提交2信息]

commit <hash-of-commit-1>
Author: Your Name <your-email@example.com>
Date:   [提交1的时间]

    [原来的提交1信息]

这样就完成了目标:Repo A重新纳入版本控制,且完整保留了Repo B的历史,同时把后续的变更作为新提交加入。如果之后你想让Repo B同步Repo A的最新状态,只需要在Repo B中添加Repo A作为远程,然后拉取即可。

内容的提问来源于stack exchange,提问作者TryHarder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:15:45