git 提示:can not merge due to depend on the changes that are not submit

问题:

(1)场景一

        本地提交commit-A,发现存在问题后,在gerrit上abandon这一单代码;

        本地继续修改代码,提交commit-B;

        commit-B在gerrt上提交时报错,提示无法merge:can not merge because depend on the changes that are not submit

(2)场景二:多人开发的大项目容易出现以下情况:

        先提交commit-A,在submit时这一单发生rebase操作,最终合入时commit -id变了。

        本地继续提交第二单代码commit-B,本地commit-B的父节点是commit-A(但本地的local-commit-id与远端的commit-id已经不一致)

        commit-B在进行submit时,gerrit认为local-commit-id对应的那一单代码没有合入,提示can not merge due to depend on the changes that are not submit.

应对方法一:

        每次提交代码之前,都使用命令git pull --rebase,使本地对远端对齐。

应对方法二:

  • 在gerrit上执行abandon命令后,在本地输入命令行
git reset --soft HEAD~1
  • 若abandon了多次,则执行多次上述命令(该命令每输入一次 回退一次)
  • 再次提交更新commit-Id

原理:
        以上命令行是往前退回一次 ,abandon几次则输入几次;
        相当于将abandon对应那次提交在本地提交历史中’删除’。 否则, 当你commit B后push并submit时, 会出现如下提示:

submit including parents: this change are depends on other change wich are not ready.

或:

can not merge due to depend on the changes that are not submit

        这是因为本地依然存在commit A, 从而导致commit B依赖于commit A, 但是commitA在gerrit上是被abandon掉的, 是不可见 的。所以导致无法submit。
 

猜你喜欢

转载自blog.csdn.net/qfturauyls/article/details/126074287