我必须在我们的应用程序中为某些模块添加一些新功能,因此我创建了一个功能分支,并开发了所需的功能。每个模块都封装在一个文件中。完成后,我得到了同时部署新功能和旧功能的请求。我当前的树看起来像这样:
- devel
- module1
- module2
- feature
- module1 (changed)
- module2 (changed)
我认为保留旧功能并同时获取新功能的最简单方法是将feature/module1
重命名为feature/module3
,将feature/module2
重命名为feature/module4
,然后将功能分支文件添加到devel分支以获取此信息:
- devel
- module1
- module2
- module3
- module4
- feature
- module3
- module4
如何在不修改devel/module1
和devel/module2
的情况下执行此操作?
答案 0 :(得分:1)
好吧,如果这确实是你想要做的,最简单的解决方案就是这样:
检查你的分支。
git checkout feature
将module1和module2复制到module3和module4(分别)。
cp module1 module3
cp module2 module4
然后做两件事之一:
假设您对这些模块所做的更改完全取决于feature
,您可以将索引还原为master
上的内容。
git revert -n $(git merge-base feature master)..HEAD
git add .
git revert --continue
或者另一种方法,即使您修改了其他不想恢复的文件也可以使用
git reset $(git merge-base feature master) -- module1 module2
git add .
git commit
现在......其中任何一个都应该有效,假设这些变化确实已经在相应的文件中进行了本地化(如果没有,那么我怀疑"旧"和"新& #34;模块可能无法在同一棵树上共存。)
但我的两分钱,这似乎是你尝试使用源代码控制工具来修复部署问题,从长远来看,这可能不是一个好主意。你想独立维持这些吗?您是否想要处理可能对module1
(旧的module1代码)所做的更改?如果没有,这可能会导致比解决更多的麻烦(特别是如果需要并发部署是暂时的)。