昨天,今天,明天,每天的每天,你是否都多懂得一点点...

星期二, 十一月 06, 2018

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

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

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 就可以了。

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

--
Feng

没有评论:

其它博客地址

此博客的同步博客地址: http://fengnz.wordpress.com
这里进入我的MSN SPACE.