问题
Whenever I sent a review to Gerrit and if the review is pending for some time, I am getting cannot merge
message in Gerrit.
I understood its coming because somebody else would have changed same file/files and delivered before me. I am trying below workaround to solve my issue.
- Abandon the current review.
- Create a new local branch, take a pull
- Cherry-pick my commit from old branch and send to gerrit
This works but the review comments whatever I had would no longer be available and it is difficult for my reviewer to check it again.
I am looking for a way to remove cannot merge
from current review. Thanks!
回答1:
You do NOT need to abandon the current change on Gerrit to solve the "cannot merge" issue. All you need to do is:
- Update your local repository (git fetch)
- Run a manual rebase (git rebase)
- Resolve the conflicts (git mergetool)
- Commit (amend) the result (git commit --amend)
- Push a new patchset to Gerrit (git push)
回答2:
Try rebase
button, which can solve most cannot-merge issues. If it can find the proper commit to rebase onto by itself, it's okay. If it cannot, find the last commit of the target branch and fill in the commit blank. Sometimes you should first submit the commit, on which the cannot-merge one has dependency. If it cannot work anyhow, just abandon it and make the commit based on the latest commit.
回答3:
The best practice when working on a shared code base using git/gerrit is to keep individual changes as small as possible. Instead of submitting your change in a single larger commit, split it into a series of smaller commits (submit the branch to gerrit) that have one logical change per commit. This workflow:
- reduces the chance of conflict in a single change
- makes conflicts easier and quicker to resolve
- make the change quicker to review
This way, the chance that someone merges his changes before you lowers. You should rebase as soon as possible so that the changes can be reviewed more easily. Rebasing regularly against the upstream branch means you keep up-to-date with changes, and don't have to deal with a large merge conflict (you get smaller, more manageable issues to resolve).
I'm not sure this answers your question but I follow these two rules and have no problems.
来源:https://stackoverflow.com/questions/37583710/cannot-merge-in-gerrit