使用Git apply patch 重复加Controller和相关文件的操作

  • fennng 

当我们在写代码的时候,有时候我们需要做一些重复的工作。 比如我现在正在做的。 我需要加一个新的功能, 而在加这个功能的时候, 我有以下文件要加:

Controllers/EmailManagersController.cs
Data/EmailManagerContext.cs
Data/EmailManagerRepository.cs
Interfaces/IEmailManagerRepository.cs
Models/Core/Workspace/EmailManagerEntity.cs

然后有以下文件要改

Helpers/Common/CommonHelper.cs
Startup.cs
appsettings.Development.json
appsettings.json

而我之前已经做过了这样类似的操作 (假设这个commit 叫C1),只不过名字不一样而已。 当然加完这些文件后,具体的功能是要再写的。 但是加这些文件其实就是在重复劳动。

有没有一种快速的方法可以生成这些文件, 并改变文件名和里面相关的类名呢?

我之前介绍过一种用Total commander sync 的方法。 今天我介绍一个用 git patch 的方法。

首先, 我们在当前的版本上新建一个分支 (B1),我直接用的是 git flow feature start

然后, 我们找到我们之前做的那个commit, 然后用那个commit 创建一个单文件patch

用文本编辑器打开这个patch 文件, 来个查找与替换, 替换到原来的名字。

这时候不要直接git apply 这个patch, 因为当前版本已经改了很多, patch 不会成功。

回到C1之前的那个版本, 从这个版本做一个分支 (B_old), 在这个分支上git apply 自然就能成功

git apply 完后, 把这个分支 (B_old) merge 到最新版的分支 (B1), 这时候肯定会有conflict, 因为我们在C1的时候做过一样的操作, 所以这次操作就会问你要保留C1的改变还是保留这次的改变, 而我们是要同时保留。

这个时候我们用Merge工具手动Merge 几下就好了, 我这里用的是 KDiff3.

Merge 完后, Commit 就可以了。

这种方法可以省很多时候, 也不容易漏掉东西。 因为时间关系,就没有图片演示了, 如果有兴趣的话,可以留言给我做个图文教程。

发表评论

您的电子邮箱地址不会被公开。