问题描述
我当前在dev_fat分支上,想合并dev_lm的代码,于是我执行:
git merge origin develop_lm
显示Already up to date。意思是已经是最新代码
排查过程
但是在ServiceImpl类中有个sendMsg方法,明明在dev_lm分支里有,但是dev_fat分支里却没有,为什么没有合并进来呢?百思不得其解,各种搜索问ai。于是我接着执行如下命令让git自己比较下二者的区别:
git diff dev_fat..origin/dev_lm -- app/src/main/java/com/basebiz/service/ServiceImpl.java
结果输出内容有如下两行:
— a/app/src/main/java/com/basebiz/service/ServiceImpl.java
+++ b/app/src/main/java/com/basebiz/service/ServiceImpl.java
这说明,git是知道dev_fat和dev_lm分支的ServiceImpl类是不一致的。但为什么没将dev_lm的内容合并进来呢?
——很有可能是因为已经有其他人“告诉”过git,不用把这个ServiceImpl类中的东西合并到develop_fat中。
确认原因
于是在dev_fat分支执行命令:
git log dev_fat
结果看到最近一条结果如下:
Merge: ab1417c7c9 2ec4627b9a
Author: lm <lm@abc.com>
Date: Thu Jul 24 19:03:51 2025 +0800
Merge remote-tracking branch 'origin/dev_lm' into dev_fat
# Conflicts:
# app/src/main/java/com/basebiz/service/ServiceImpl.java
果然,我的同事lm曾经也进行过相同的merge操作,可能当时在解决冲突的时候“告诉”了git,不用再将ServiceImpl合并到dev_fat了。
解决方案
手动指定文件进行合并,在dev_fat分支执行:
git checkout origin/dev_lm -- app/src/main/java/com/basebiz/service/ServiceImpl.java
git commit -m "手动合并缺失方法"
然后push到远端,结束。