如何将重命名的文件从一个分支合并到原始分支作为新的git?

时间:2018-05-10 14:10:50

标签: git git-branch git-merge branching-and-merging

我必须在我们的应用程序中为某些模块添加一些新功能,因此我创建了一个功能分支,并开发了所需的功能。每个模块都封装在一个文件中。完成后,我得到了同时部署新功能和旧功能的请求。我当前的树看起来像这样:

- 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/module1devel/module2的情况下执行此操作?

1 个答案:

答案 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代码)所做的更改?如果没有,这可能会导致比解决更多的麻烦(特别是如果需要并发部署是暂时的)。