有没有办法将git提交从我的树的一部分应用到另一部分?

时间:2012-04-13 15:10:52

标签: git cherry-pick

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

mgmt-app
mgmt-app.old

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

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

2 个答案:

答案 0 :(得分:1)

为“旧”的东西开一个新的分支:

git checkout -b old

使用gitk,浏览您的历史记录,然后在创建mgmt-app.old之前找出提交。确定该提交的SHA1,并

git reset --hard <sha1>

在那里建立old分支点。现在你有一个分支,用于开发时分歧,你可以做一个interactive rebasegit rebase -i)来挑选(并编辑,如果需要的话)从你的新/当前开发分支到这个旧分支的提交。

答案 1 :(得分:0)