繁体   English   中英

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

[英]Apply commits from one git repository to subfolder of another repository

上游存储库位于github上,称“ droid”。 我分叉了它,并在fork中添加了一些提交。 但是上游仓库“ droid”已移至另一个现有仓库的子文件夹,例如“ allRepo”,现在位于“ allRepo / droid”中。 我也分叉了。 我可以将提交内容从my_fork_1移动到my_fork_2(或本地),然后继续使用my_fork_2(即“ allRepo”的分支)工作吗?

在子目录(子树)中将一些以前单独的项目(具有自己的单独存储库和单独的历史记录)作为某个较大项目的一部分是子树合并 ,例如,在git文档中的如何使用子树合并策略中进行了介绍, Pro Git”书中的Git工具-子树合并一章(CC-NC-SA 3.0许可证)和使用子树合并 GitHub帮助页面(在“高级Git”部分中)。

注意,您只需要设置一次子树合并。 从子项目存储库到整个项目存储库的所有将来合并都将自动应用。 或者,您可以在将提交合并到整个项目存储库之后切换为使用整个项目存储库。

从git 1.7.11 开始, contrib区域也有git subtree命令可用

一种解决方案是不将第一个git的差异应用于第二个git

在第一个回购中:

git diff <hash> <hash>~1 > patch

在第二:

git apply /some/path/to/the/patch
git commit

并使用以下命令获取第一次回购的消息:

git log <hash> -n 1 | tail -n+5 | sed -e "s/^ *//"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM