让我用一个例子来解释这个问题:
我在我的旧项目仓库工作OlDRepo/libs/graphics
我对图形进行了一些更改并做了很多提交。
现在,我开始使用新版本的图形
的新项目 NewRepo/Dir1/libs/graphics
我想将旧图形目录所做的所有更改带到新项目中 (请注意路径中的Dir1)
我可以执行简单的git diff
和diff
,但我想维护单个提交。
我该如何做到这一点?
编辑:我怀疑我的问题对任何人都没有意义(除了我!)。让我再试一次真正的问题。
我用cocos2d-iphone 1.1版开始了一个iphone项目。 它来自xcode模板,它创建了一个带有新repo的全新项目,初始提交包含cocos2d-iphone 1.1版(注意:它的来源)
我继续开发我的项目...提交,提交... [添加新文件] 在某些时候,我不喜欢cocos2d-iphone 1.1版中的内容。我直接改变了源代码(可能我不应该)。并自豪地提交.. [改进的Cocos2d-ccnode] 。再次提交.. [改进的Cocos2d-ccsprite]
最后发布了应用程序。
现在,我想开发一个新项目,我查了一下,cocos2d-iphone版本2.0可用。 我安装了新的项目模板(使用cocos2d-iphone 2.0版)。
从模板创建新项目;再次使用包含cocos2d-iphone版本2.0的初始提交的新repo的全新项目
请注意,cocos2d-iphone版本2.0不是1.1的完整重写,但包含很小的更改。
现在我记得我对cocos2d-iphone 1.1版的改进(!)。我想将这些更改应用于新项目。绝对不是一次提交。
答案 0 :(得分: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不是同一个本地回购。因此,您应首先将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
或类似的技巧,但无论如何得到一些关于挑选樱桃的信息,我认为这就是你需要的。