git merge 后 push 到 Gerrit 失败,提示 no new changes
解决思路:
分析:no new changes 的意思,是说,这个合并,是个线性的合并。而合并的那些历史的 commit 节点,在 gerrit 上都已经评审过了,都是已有的 change 单,所以 gerrit 认为没有新的提交,就不让你提交评审。
方法: 在 git merge 的时候,加上 --no-ff 参数,是为了让它生成一个新的 commit,这样就可以提交了~(不过生成的 gerrit change 是看不到改动信息的)
实操
# 切换到开发分支dev1,并拉新
git checkout dev1
git pull
# 切换到release分支,并拉新
git checkout release1
git pull
# 在当前release分支,将dev1合进来
# 作为对比,合并前后可以用git status查看状态
git status
git merge --no-ff dev1
git status
=====
# 遇到一个会产生歧义的地方,记录一下
# 当在dev分支的时候,执行status会报出以下内容
-git status
#弹出信息:
On branch develop/d_time_devPoint
You branch is up to date with 'origin/develop/d_time_devPoint'
# 同理,先切换到release分支,在release分支上执行status
git checkout r_release_point_time
# 弹出信息:
Switched to branch 'r_release_point_time'.
You branch is up to date with 'origin/r_release_point_time'
-git status
# 弹出信息:
On branch r_release_point_time
You branch is up to date with 'origin/r_release_point_time'
# 此时将dev内容合并release分支,直接用idea工具也能合并,但是提交不上去,会产生上面的异常。
# 在release分支上执行:
git merge --no-ff develop/d_time_devPoint
#备注:是develop/d_time_devPoint,不是d_time_devPoint。只忽略origin/就行,后面的内容不管是release还是dev,都要保留。这个既符合merge命令,也符合checkout命令
最后一步,可以借用idea的提交代码插件push上去