【git】再也不背锅了!!!快速找出谁在乱改代码

系列文章目录


背景

基于 Spring Boot 开发的项目中,使用 @Scheduled(cron = "0 0 1 * * ?") 定义的定时任务,在正常运行一段时间后,突然停止运行,系统也没有报错,系统也能正常提供服务没有假死。

按如下思路逐一排查

  1. jar 包版本冲突(刚上线了新版本)
  2. 定时任务出现异常,但是异常被丢了
  3. 数据量过大,执行时间过长

经过一上午的排查,排除了以上 3 点可能的原因,最终发现 @EnableScheduling 注解被删除了!!!😓😓😓😓😓😓

出现了这么低级的失误,坑定是要找出责任人的,那么如何找呢?本文提供 2 种方式


Blame

使用 git blame 查看最后一次修改信息

git blame -L <start>,<end> path/to/file

查看指定文件的指定行号范围的最后一次修改信息

出问题的代码是 src/main/java/com/example/Application.java47 行,所以命令如下:

git blame -L 40,50 src/main/java/com/example/Application.java

输出结果如下:

23c169d949 (zhang.san  2023-03-08 16:31:44 +0800 40)         com.example.basic.model.DateFormatter.class,
23c169d949 (zhang.san  2023-03-08 16:31:44 +0800 41)         com.example.basic.exception.GlobalExceptionHandler.class}
23c169d949 (zhang.san  2023-03-08 16:31:44 +0800 42) )})
8006f6c954 (li.si      2021-10-27 17:41:19 +0800 43) @SpringBootApplication
965c9697a9 (zhang.san  2022-05-09 17:22:44 +0800 44) @EnableYLResourceServer
b6a6a2ee06 (zhang.san  2021-12-04 13:54:41 +0800 45) @EnableCaching
b6a6a2ee06 (zhang.san  2021-12-04 13:54:41 +0800 46) @EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
f28ad73a65 (zhao.liu   2023-07-11 16:23:08 +0800 47) //@EnableScheduling
8006f6c954 (li.si      2021-10-27 17:41:19 +0800 48) @Slf4j
927befc6b4 (wang.wu    2022-03-29 14:45:17 +0800 49) @EnableJpaAuditing
927befc6b4 (wang.wu    2022-03-29 14:45:17 +0800 50) @EntityScan("com.example.biz.model.entity")

找到了注释 @EnableScheduling 注解的责任人 zhao.liu

Log

使用 git log 查看修改历史

git log -S 'str' -p path/to/file

在提交历史中查找指定的文件中包含特定字符串的代码更改,并显示相关的变更内容

出问题的代码是 src/main/java/com/example/Application.java 中的 //@EnableScheduling 所以命令如下:

git log -S '//@EnableScheduling' -p src/main/java/com/example/Application.java

输出结果如下:

commit 866f388b8b7f4cf43b16e146e120d9c0746ccc10
Author: zhao.liu <zhao.liu@example.email.com>
Date:   Thu Jul 6 14:51:22 2023 +0800

    int excludeTenantInterceptor

diff --git a/server/src/main/java/com/example/server/Application.java b/server/src/main/java/com/example/server/Application.java
index 5fd94ae6e..174d1657c 100644
--- a/server/src/main/java/com/example/server/Application.java
+++ b/server/src/main/java/com/example/server/Application.java
@@ -14,7 +14,6 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.context.annotation.FilterType;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 import tk.mybatis.spring.annotation.MapperScan;

@@ -44,7 +43,7 @@ import tk.mybatis.spring.annotation.MapperScan;
 @EnableYLResourceServer
 @EnableCaching
 @EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
-@EnableScheduling
+//@EnableScheduling
 @Slf4j
 @EnableJpaAuditing
 @EntityScan("com.example.biz.model.entity")

找到了注释 @EnableScheduling 注解的责任人 zhao.liu


总结

git blame 最常用,可以直接找到修改者

git log 不单单可以找到修改者,还可以查看有没有发生过类似的事情,以防微杜渐

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当你在使用IDEA时,如果遇到找不到git提交代码的问题,可能是由于你没有正确配置git的身份信息所致。你可以按照以下步骤来设置git的身份信息: 1. 打开终端或命令行窗口。 2. 输入以下命令来设置你的邮箱地址: git config --global user.email "[email protected]" 将"[email protected]"替换为你的邮箱地址。 3. 输入以下命令来设置你的用户名: git config --global user.name "Your Name" 将"Your Name"替换为你的用户名。 4. 确保你在使用IDEA时,选择了正确的git账户。 可以在IDEA的设置中找到Version Control -> Git,然后在"Default Settings"或"Project Settings"中设置你的git账户。 如果你只想在当前项目中设置git账户,可以选择"Project Settings"。 如果你想在所有项目中设置git账户,可以选择"Default Settings"。 确保你的git账户与你在终端或命令行窗口中设置的账户一致。 5. 重新启动IDEA,并尝试提交代码,看是否能够找到git提交功能了。 希望这些步骤能够帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便我能够更好地帮助你。 #### 引用[.reference_title] - *1* [Idea git提交代码失败的解决法](https://blog.csdn.net/hwh22/article/details/122107626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值