gpt4 book ai didi

git - 如何将一个 Git 存储库 rebase 到另一个?

转载 作者:IT王子 更新时间:2023-10-29 00:42:33 24 4
gpt4 key购买 nike

我有一个 Git 存储库 (A),其中包含一个项目的开发,直到某个时间点。然后我丢失了这个 repo A 所在的 USB 内存棒。幸运的是,我有最新提交的备份,所以我可以稍后创建一个新的存储库 (B),我可以在其中导入最新项目的状态并继续开发。现在我找回了那个丢失的 U 盘,所以我有两个 Git 存储库。

我想我只需要以某种方式将 repo B rebase 到 repo A,但我不知道该怎么做,也许使用 fetch/pull 和 rebase ?

最佳答案

如果 A 和 B 不是同一个存储库(您使用最新的工作副本创建了 B),则必须使用 graft假装他们有共同的历史。

假设您已根据 VonC’s answer 添加 A 作为 B 的远程,代码库看起来像这样1:

~/B$ git tnylog 
* 6506232 (HEAD, master) Latest work on B
* 799d6ae Imported backup from USB stick
~/B$ git tnylog A/master
* 33b5b16 (A/master) Head of A
* 6092517 Initial commit

创建一个移植物,告诉 B 的根节点它的父节点是 A 的头部节点:

echo '799d6aeb41095a8469d0a12167de8b45db02459c 33b5b16dde3af6f5592c2ca6a1a51d2e97357060' \
>> .git/info/grafts

现在,当您请求 B 的历史记录时,上面的两个历史记录将显示为一个。使嫁接永久化是一个简单的 git filter-branch,没有参数。但是,在 filter-branch 之后,你不在任何分支上,所以你应该 git branch -D master; git checkout -b master.


1 git tnylog = git log --oneline --graph --decorate

关于git - 如何将一个 Git 存储库 rebase 到另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com