上游存储库位于github上,说“droid”。我分叉它并在我的fork中添加一些提交。 但上游回购“机器人”被移动到子文件夹到另一个现有的回购,说“allRepo”,现在它在“allRepo / droid”。我也分叉了。我可以将我的提交从my_fork_1移至my_fork_2(或本地),并继续使用my_fork_2,即“allRepo”的分支吗?
答案 0 :(得分:3)
使一些以前独立的项目(具有它自己的独立存储库和单独的历史记录)在某个子目录(子树)中的某个较大项目的一部分是子树合并,并且例如描述了在“How to use the subtree merge strategy” HOWTO的git文档中,“Git Tools - Subtree Merging”“Pro Git”一书中的章节(CC-NC-SA 3.0许可证) ,和“Working with subtree merge” GitHub帮助页面(在高级Git部分中)。
请注意,您只需要设置一次子树合并;从子项目仓库到整个项目仓库的所有未来合并将自动应用。或者,您可以在将提交合并到其中后切换到使用整个项目存储库。
自git 1.7.11以来,还有 git subtree
命令,available in contrib
area
答案 1 :(得分:2)
一种解决方案是,不将第一个git中的diff应用到第二个git
在第一个回购中:
git diff <hash> <hash>~1 > patch
在第二个:
git apply /some/path/to/the/patch
git commit
使用以下命令获取第一个repo的消息:
git log <hash> -n 1 | tail -n+5 | sed -e "s/^ *//"