dir*_*ofu 10 git version-control merge repository
假设我有两个不同的存储库,如下所示:
Project 1:
Init---A---B---C---HEAD1
Project 2:
Init---D---E---F---G---HEAD2
Run Code Online (Sandbox Code Playgroud)
有没有办法将Project 1(Init to HEAD)重新绑定到Project 2的Init提交,所以它看起来像这样:
Project 1 & 2:
A---B---C---HEAD1
/
Init---D---E---F---G---HEAD2
Run Code Online (Sandbox Code Playgroud)
项目1和项目2的内容类似.主要区别在于它们的文件结构略有不同,如下所示:
Project1:
MyProject/
File1
File2
File3
Project2:
MyParentProject/
MyProject/
File1
File2
File3
SomeFolder/
SomeOtherFolder/
...etc/
Run Code Online (Sandbox Code Playgroud)
仅供参考:MyProject不是MyParentProject的子模块.MyProject和MyParentProject存在于两个独立的位置,作为两个单独的git存储库.
bob*_*vil 13
您可以将一个视为另一个的远程存储库.在Project1中,运行以下命令:
git remote add project2 <path_to_project_2>
git fetch project2
git branch --track project2Branch project2/master
git checkout project2Branch
Run Code Online (Sandbox Code Playgroud)
使用git log查找该分支的初始提交的哈希值(即Project2).然后跑
git checkout master # or whatever branch you want to rebase
git rebase <hash-for-commit>
Run Code Online (Sandbox Code Playgroud)
您现在已经使用Project2重新命名了Project1.由于这听起来像是一次性操作,您只能使用一个存储库,因此可以使用
git remote rm project2
Run Code Online (Sandbox Code Playgroud)
因此,现在您的主分支使用Project2的init进行重新定义,而project2Branch具有Project2的其余历史记录.这有点像黑客,但它会做你想要的.