1

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

4

2 回答 2

3

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

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

还有一个git subtree命令,从 git 1.7.11开始在contrib区域可用

于 2013-05-07T12:20:28.680 回答
2

一种解决方案,不是将第一个 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/^ *//"
于 2013-05-07T09:20:01.937 回答