2

在昏暗而遥远的过去,我们决定破坏与我们的配置程序之一的兼容性。然而,由于仍有远程单元运行旧软件,我们需要在构建中保留旧 mgmt 软件的版本。一个简短的“cp -a”之后,我们最终得到了一个目录结构,其中包含:

mgmt-app
mgmt-app.old

开发继续进行,mgmt-app 积累了许多修复,一些是新功能和一些通用功能。正如您可能猜到的那样,现在注意到 mgmt-app.old 没有这些修复程序中的一些。如果我能挑选相关的修复程序并保留有用的东西(如评论)但将提交应用到 mgmt-app.old,那就太好了。显然它们不能正常应用,因为它们已经在应用到 mgmt-app 的树中!

我们正在使用 git 对存储库进行版本控制。有没有办法可以将这些提交“反向移植”到树的不同部分?这只是通过使用“patch -p”手动应用补丁来解决吗?

4

2 回答 2

1

为您的“旧”东西创建一个新分支:

git checkout -b old

使用gitk,回顾您的历史并找出mgmt-app.old创建之前的提交。确定该提交的 SHA1,以及

git reset --hard <sha1>

在那里建立你的old分支点。现在,您有一个分支,用于记录何时出现开发分歧,您可以执行交互式 rebase ( git rebase -i) 来挑选(并在需要时编辑)从新/当前开发分支到旧分支的提交。

于 2012-04-13T18:37:17.573 回答
0

利用git cherrypick

于 2012-04-13T15:17:48.383 回答