Cherry-pick从单个git提交到多个git

时间:2016-06-22 14:45:27

标签: git commit cherry-pick

我遇到了从两个项目中移动一些提交的问题,详情如下: - 项目1:有一个git重新组合许多目录 - 项目2:拥有项目1的相同目录,但是对于每个目录,都有一个单独的git。 问题是: 我在项目一中提交了一个触及2个目录中的文件的提交,并且我想挑选该提交并移动每个文件的每个更改并将它们提交到项目2。

1 个答案:

答案 0 :(得分:0)

一个cherry-pick抓取整个提交,并将整个提交应用于当前分支。正如我理解你的问题,你想要提交更改多个目录的提交,并且只选择每个提交中的单个目录的更改到一个单独的git存储库中,该存储库仅包含该目录。

正如我所说,由于樱桃选择抓住整个提交,它本身就不会那样工作。

然而,为了达到这个目的,应该可以将樱桃镐与滤枝一起使用。

要做的第一件事是检查项目1中的新工作分支,以免弄乱任何现有分支。你工作的分支将是一个火红的残骸,到此结束时,你可以安静地摆脱它;没有伤害,没有犯规。

进入新的工作分支后,使用git filter-branch --tree-filter重写提交,删除树中除了一个有问题的目录之外的所有内容(你必须从提交的父目录开始重写)提交您希望迁移,而不是提交/提交本身。)

此时,重写的提交最终只会触及项目1中单个目录中的文件(您最终会将所有其他目录完全吹走,在您的工作分支中,但是谁在乎)。父提交包括删除工作分支中的所有其他目录,并且所有以下提交仅限于其余目录中的更改。此时,您应该能够将这些提交选择到Project 2的相应git存储库中。

为您尝试迁移的每个此类目录进行播放,冲洗和重复。