将一个git存储库中的提交应用于另一个存储库的子文件夹

时间:2013-05-07 08:52:29

标签: git github

上游存储库位于github上,说“droid”。我分叉它并在我的fork中添加一些提交。 但上游回购“机器人”被移动到子文件夹到另一个现有的回购,说“allRepo”,现在它在“allRepo / droid”。我也分叉了。我可以将我的提交从my_fork_1移至my_fork_2(或本地),并继续使用my_fork_2,即“allRepo”的分支吗?

2 个答案:

答案 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/^ *//"
相关问题