【FAQ】git merge develop后, push到gerrit失败, 提示 no new changes?
需求来源
git 分支合并
问题描述
使用 git merge 在本地执行分支合并操作,然后想 push 到 gerrit 上评审入库,可是在提交时,提示:
! [remote rejected] HEAD -> refs/for/dev (no new changes)
分析:no new changes 的意思,是说,这个合并,是个线性的合并。而合并的那些历史的 commit 节点,在 gerrit 上都已经评审过了,都是已有的 change 单,所以 gerrit 认为没有新的提交,就不让你提交评审。
如下图所示,bugfix分支基于master线性变化,git merge时,git会利用fast farward快进合并,即master指针移到bugfix处。

解决方式
在 git merge 的时候,加上 --no-ff 参数,是为了让它生成一个新的 commit,这样就可以提交了~
-- 回退本地提交,回退至merge之前
git reset --hard HEAD^
-- 重新合并
git merge --no-ff develop
上面的参数,–no-ff即禁用fast farward
扩展知识
分支管理
廖雪峰老师讲的《分支管理策略》
https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480
分支合并
猴子都能懂的Git指导,文章讲得很好,图文并茂,生动形象,通俗易懂,推荐。
https://backlog.com/git-tutorial/cn/stepup/stepup1_4.html
多理解下merge和rebase差异。目的都是合并,历史记录差异。
想起之前的一句网络语言,你是猴子请来的救兵么?
历史记录
git查看各个branch之间的关系图
使用git log命令
git log --graph --decorate --oneline --simplify-by-decoration --all
说明:
–decorate 标记会让git log显示每个commit的引用(如:分支、tag等)
–oneline 一行显示
–simplify-by-decoration 只显示被branch或tag引用的commit
–all 表示显示所有的branch,这里也可以选择,比如我指向显示分支ABC的关系,则将–all替换为branchA branchB branchC
更多推荐
所有评论(0)