Gerrit y repo

Cargué un parche X en gerrit, pero por error incluí un file Y que no debería haber incluido en el parche. Ahora, quiero enviar un nuevo parche para X, sin el file Y. ¿Es posible hacer eso?

Pasos para eliminar Y del nuevo Patchset para X
Eliminé manualmente todos los cambios que hice en Y (No es la mejor manera de hacerlo, pero eliminó Y del nuevo Patchset para X)
git add .
git commit -s --amned
repo upload .

La respuesta corta:

 $ git reset HEAD^ <file to remove from commit> $ git commit --amend 

esto dejará todavía el <file> modificado localmente, por lo que, suponiendo que ya no desee la modificación, puede revertir esa modificación:

 $ git checkout <file> 

Esa es la forma más rápida de hacerlo. Otra opción:

 $ git log -n1 --oneline | cat $ git reset --soft HEAD^ $ git reset <file to be unstaged> $ git commit -C <sha1 commit hash from "git log" above> 

No he usado mucho Gerrit, pero puedes modificar el compromiso, creo.

Enmendar un compromiso

Al enmendar un commit con git commit –amend, deje la línea Change-Id sin modificar en el post de confirmación. Esto permitirá a Gerrit actualizar automáticamente el cambio con la confirmación modificada.

http://gerrit.googlecode.com/svn/documentation/2.0/user-changeid.html#amend

Después de comentar:

¿Está asegurando que la línea Change-Id esté presente y sea la última línea de su post de confirmación? Si las líneas de Id. De cambio no están presentes en los posts de confirmación, copie la línea de la página del cambio en la web y colóquela en su post de confirmación.

es su cambio ya revisado? Si todavía están esperando su revisión, simplemente puede marcarlo como abandonado y deshacerse de ellos. Después, puede volver a asignar el código correcto.

si sus cambios se revisaron y el parche ya se fusionó en el repository de git, la solución no debería ser diferente al deshacer un git push que se explica en el hilo; Deshacer un 'git push'