我有一个 Git 存储库 (A),其中包含项目到某一时刻的开发情况。然后我丢失了这个存储库 A 所在的 USB 记忆棒。幸运的是,我有最新提交的备份,因此我可以稍后创建一个新的存储库 (B),在其中导入最新项目的状态并继续开发。
现在我恢复了丢失的 USB 记忆棒,所以我有两个 Git 存储库。
我想我只需要以某种方式将 repo B 重新设置为 repo A ,但我不知道该怎么做,也许使用 fetch/pull 和 rebase ?
如果 A 和 B 不是同一个存储库(您使用拥有的最新工作副本创建了 B),则必须使用graft假装他们有共同的历史。
Let’s assume you’ve added A as a remote for B as per VonC’s answer, and the repo looks like this1:
~/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
没有争论。但是,在过滤器分支之后,您不在任何分支上,因此您应该git branch -D master; git checkout -b master
.
1 git tnylog
= git log --oneline --graph --decorate
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)