2012-04-13 28 views
2

在朦胧和遥远的过去,我们决定打破与我们的配置程序之一的兼容性。然而,由于仍然会有运行较旧软件的远程单元,因此我们需要在构建版本中保留旧版mgmt软件。短暂的“CP -a”后,我们结束了包含目录结构:有没有办法将git提交从我的树的一部分应用到另一部分?

mgmt-app 
mgmt-app.old 

发展继续和MGMT-应用积累了一些修正,一些新的功能和一些通用功能。正如您大概可以猜到现在注意到mgmt-app.old没有这些修复程序。如果我能够选择相关的修补程序并保留诸如注释之类的有用内容,但将提交应用于mgmt-app.old将会很好。显然,他们不适用,因为他们已经在树上应用到mgmt-app!

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

+0

你应该为这些目录使用不同的分支或者甚至是存储库,而不仅仅是复制仓库中的数据。祝你好运,你的杂乱的存储库。 – KurzedMetal 2012-04-13 16:45:35

+0

@KurzedMetal:不幸的是,需要在同一系统版本中构建两个版本的mgmt-app。这是因为一个通用的代码库用于管理软件(可以与多个设备通信)作为系统软件(当然这只能管理自己)。这种混乱通常是由于释放实际产品所需的妥协。 – stsquad 2012-04-16 12:11:53

+0

如果我是你,我会将'mgmt'目录保存在一个存储库的不同分支中(以便能够在它们之间进行合并或选择)和另一个存储库中的通用代码。然后,我可以使用'git submodule'或者反过来将'mgmt'目录导入到通用代码中(无论您需要什么,都可以将常用代码导入每个'mgmt'目录)。 – KurzedMetal 2012-04-16 13:42:44

回答

0
+0

我想你已经误解了这个问题。这些是在同一分支提交。阅读手册页我无法看到如何将樱桃选择转换为同一树中的新目录。 – stsquad 2012-04-13 15:58:36

+0

git commit!= diffs,当你说“将git commit应用到我的树的另一方”时,它指的是提交树而不是文件系统树。这就是cherrypick所做的,将提交树的一部分提交到另一部分,我认为你提出了错误的问题。 – KurzedMetal 2012-04-13 16:42:13

1

开始为你的“老”东西,一个新的分支:

git checkout -b old

使用gitk,回去通过你的历史,并找出正确的提交创建mgmt-app.old之前。确定的是,SHA1提交和

git reset --hard <sha1>

,让您的old分支点出现。现在你有一个分支,当发展分化时,你可以做一个interactive rebasegit rebase -i)樱桃选择(如果需要,编辑)从你的新/当前开发分支提交到这个旧分支。

相关问题