kro*_*mon 55 git merge repository rebase
我有一个Git存储库(A),它包含项目的开发直到某一点.然后我丢失了这个回购A打开的USB记忆棒.幸运的是,我有一个最新提交的备份,所以我可以稍后创建一个新的存储库(B),我导入最新项目的状态并继续开发.现在我恢复了丢失的USB记忆棒,所以我有两个Git存储库.
我想我不得不以某种方式将回购B重新命名为回购A,但我不知道如何做到这一点,也许使用fetch/pull和rebase?
Jos*_*Lee 63
如果A和B不是同一个仓库(您使用最新的工作副本创建了B),则必须使用移植来假装它们具有共同的历史记录.
假设你根据VonC的答案添加了A作为B的遥控器,并且repo看起来像这样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
Run Code Online (Sandbox Code Playgroud)
创建一个移植物告诉B的根,它的父节点是A的头:
echo '799d6aeb41095a8469d0a12167de8b45db02459c 33b5b16dde3af6f5592c2ca6a1a51d2e97357060' \
>> .git/info/grafts
Run Code Online (Sandbox Code Playgroud)
现在,当您请求B的历史时,上面的两个历史将显示为一个.使移植永久化是一个简单的git filter-branch,没有参数.但是,在filter-branch之后,你不在任何分支上,所以你应该这样做git branch -D master; git checkout -b master.
1 git tnylog =git log --oneline --graph --decorate
git filter-branch自 Git 2.24(2019 年第 4 季度)起已弃用。相反,对于 A 和 B 不是同一个存储库的场景,您可以使用git replace --graft <commit> <parent>.
看:
| 归档时间: |
|
| 查看次数: |
20786 次 |
| 最近记录: |