|  | :linkattrs: | 
|  | = same Change-Id in multiple changes | 
|  |  | 
|  | With this error message Gerrit rejects to push a commit if it | 
|  | contains the same Change-Id as a predecessor commit. | 
|  |  | 
|  | The reason for rejecting such a commit is that it would introduce, for | 
|  | the corresponding change in Gerrit, a dependency upon itself. Gerrit | 
|  | prevents such dependencies between patch sets within the same change | 
|  | to keep the review process simple. Otherwise reviewers would not only | 
|  | have to review the latest patch set but also all the patch sets the | 
|  | latest one depends on. | 
|  |  | 
|  | This error is quite common, it appears when a user tries to address | 
|  | review comments and creates a new commit instead of amending the | 
|  | existing commit. Another possibility for this error, although less | 
|  | likely, is that the user tried to create a patch series with multiple | 
|  | changes to be reviewed and accidentally included the same Change-Id | 
|  | into the different commit messages. | 
|  |  | 
|  |  | 
|  | == Example | 
|  |  | 
|  | Here an example about how the push is failing. Please note that the | 
|  | two commits 'one commit' and 'another commit' both have the same | 
|  | Change-Id (of course in real life it can happen that there are more | 
|  | than two commits that have the same Change-Id). | 
|  |  | 
|  | ---- | 
|  | $ git log | 
|  | commit 13d381265ffff88088e1af88d0e2c2c1143743cd | 
|  | Author: John Doe <john.doe@example.com> | 
|  | Date:   Thu Dec 16 10:15:48 2010 +0100 | 
|  |  | 
|  | another commit | 
|  |  | 
|  | Change-Id: I93478acac09965af91f03c82e55346214811ac79 | 
|  |  | 
|  | commit ca45e125145b12fe9681864b123bc9daea501bf7 | 
|  | Author: John Doe <john.doe@example.com> | 
|  | Date:   Thu Dec 16 10:12:54 2010 +0100 | 
|  |  | 
|  | one commit | 
|  |  | 
|  | Change-Id: I93478acac09965af91f03c82e55346214811ac79 | 
|  |  | 
|  | $ git push ssh://JohnDoe@host:29418/myProject HEAD:refs/for/master | 
|  | Counting objects: 8, done. | 
|  | Delta compression using up to 2 threads. | 
|  | Compressing objects: 100% (2/2), done. | 
|  | Writing objects: 100% (6/6), 558 bytes, done. | 
|  | Total 6 (delta 0), reused 0 (delta 0) | 
|  | To ssh://JohnDoe@host:29418/myProject | 
|  | ! [remote rejected] HEAD -> refs/for/master (same Change-Id in multiple changes. | 
|  | Squash the commits with the same Change-Id or ensure Change-Ids are unique for each commit) | 
|  | error: failed to push some refs to 'ssh://JohnDoe@host:29418/myProject' | 
|  |  | 
|  | ---- | 
|  |  | 
|  | If it was the intention to rework a change and push a new patch | 
|  | set, the problem can be fixed by squashing the commits that contain the | 
|  | same Change-Id. The squashed commit can then be pushed to Gerrit. | 
|  |  | 
|  | To squash the commits, use `git rebase -i` to do an interactive rebase. For | 
|  | the example above where the last two commits have the same Change-Id, | 
|  | this means an interactive rebase for the last two commits should be | 
|  | done. For further details about the git rebase command please check | 
|  | the link:http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html[Git documentation for rebase,role=external,window=_blank]. | 
|  |  | 
|  | ---- | 
|  | $ git rebase -i HEAD~2 | 
|  |  | 
|  | pick ca45e12 one commit | 
|  | squash 13d3812 another commit | 
|  |  | 
|  | [detached HEAD ab37207] squashed commit | 
|  | 1 files changed, 3 insertions(+), 0 deletions(-) | 
|  | Successfully rebased and updated refs/heads/master. | 
|  |  | 
|  | $ git log | 
|  | commit ab37207d33647685801dba36cb4fd51f3eb73507 | 
|  | Author: John Doe <john.doe@example.com> | 
|  | Date:   Thu Dec 16 10:12:54 2010 +0100 | 
|  |  | 
|  | squashed commit | 
|  |  | 
|  | Change-Id: I93478acac09965af91f03c82e55346214811ac79 | 
|  |  | 
|  | $ git push ssh://JohnDoe@host:29418/myProject HEAD:refs/for/master | 
|  | Counting objects: 5, done. | 
|  | Writing objects: 100% (3/3), 307 bytes, done. | 
|  | Total 3 (delta 0), reused 0 (delta 0) | 
|  | To ssh://JohnDoe@host:29418/myProject | 
|  | * [new branch]      HEAD -> refs/for/master | 
|  | ---- | 
|  |  | 
|  | If it was the intention to create a patch series with multiple | 
|  | changes to be reviewed, each commit message should contain the | 
|  | Change-Id of the corresponding change in Gerrit.  If a change in | 
|  | Gerrit does not exist yet, the Change-Id should be generated (either | 
|  | by using a link:cmd-hook-commit-msg.html[commit hook] or by using EGit) or the Change-Id could be | 
|  | removed (not recommended since then amending this commit to create | 
|  | subsequent patch sets is more error prone). To change the Change-Id | 
|  | of an existing commit do an interactive link:http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html[git rebase,role=external,window=_blank] and fix the | 
|  | affected commit messages. | 
|  |  | 
|  |  | 
|  | GERRIT | 
|  | ------ | 
|  | Part of link:error-messages.html[Gerrit Error Messages] | 
|  |  | 
|  | SEARCHBOX | 
|  | --------- |