0

让我用一个例子来解释这个问题:

假设我对位于OldRepo/libs/graphics项目 git 存储库目录中的文件进行了几项更改。

现在,我开始使用新版本的图形处理一个新项目

NewRepo/Dir1/libs/graphics

我想将对旧项目存储库中的图形目录所做的所有更改应用到新项目存储库中的图形目录(请注意Dir1新存储库的路径)。

我正在寻找一种解决方案,它可以将更改和单个提交从诸如此类的工具转移OldRepoNewRepo诸如此类的工具中git diffdiff但还不够。

我怎样才能做到这一点?

我试图解决的实际问题如下

我开始了一个cocos2d-iphone1.1 版的 iphone 项目。它来自xcode模板;它使用包含 1.1 版的初始提交创建了一个全新的项目,其中包含新的 repo cocos2d-iphone(注意:它只是源代码)。

我继续开发我的项目...提交,提交... [添加新文件] 在某些时候,我需要更改 cocos2d-iphone 1.1 版的行为,所以我直接更改源代码并提交我的更改.. [改进的 Cocos2d-ccnode]。和.. [改进的 Cocos2d-ccsprite]

最后我发布了应用程序。

现在,我正在开始一个新项目,并且cocos2d-iphone2.0 版本可用。我安装了新的项目模板(cocos2d-iphone2.0 版)。

从模板创建新项目;这又是一个全新的项目,带有一个新的 repo,初始提交包含cocos2d-iphone2.0 版

请注意,cocos2d-iphone2.0 版并不是对 1.1 版的完全重写,而是包含一些小的更改。

我想将我对cocos2d-iphone1.1 版所做的改进应用到我的新项目中。绝对不是一次提交。

4

1 回答 1

0

我会建议:

  cocos1.1        cocos2.0 (you work on this right now)
    \        
     \    
    changes

这就是你所拥有的,对吧?所以你想要的是选择你在 cocos1.1 上所做的确切更改并将其应用于 cocos2.0?我的建议是对git cherry-pick你的改变。

你也可以变基,但我不确定它是否会起作用,因为 cocos2.0 似乎没有直接链接到 cocos1.1(你也可以尝试这种方式)

顺便说一句,我想 cocos1.1 和 2.0 不是同一个本地 repo。所以你应该首先将 cocos1.1 添加为远程:在 cocos2.0 中,运行git remote add cocos1.1 path/to/cocos1.1. 然后git branch --track cocos1.1changes cocos1.1/desiredbranch

所以你计算出你的提交列表,比如 c1 到 c20(你需要使用他们的 SHA-1 哈希)。他们在cocos1.1changes树枝上。

你要做的是git checkout cocos2.0在正确的分支上工作,然后应用你的提交。您可以从简单开始git cherry-pick c1(c1 是 SHA-1 哈希)

我认为有类似git cherry-pick c1~c20或类似的技巧,但无论如何获取一些关于樱桃采摘的信息,我认为这就是你需要的。

祝你好运

于 2012-08-21T16:29:21.207 回答