Cómo deshacerse de las dependencies falsas en gerrit

Parece que al usar gerrit, por defecto todos los cambios dependen del anterior. No ramifico para nuevos cambios, simplemente trabajo fuera de la twig maestra y luego envío los cambios comprometidos a un origen / maestro remoto. Se crea una dependencia cada vez, incluso si las dos confirmaciones no tienen nada que ver entre sí.

Me he encontrado con algunos problemas que me hacen pensar que no estoy usando git correctamente en combinación con gerrit.

¿Qué debería pasar de forma diferente en mi flujo de trabajo de git / gerrit para que cada compromiso no dependa de la confirmación anterior? También intenté crear una nueva sucursal para el cambio:

> git pull origin master > git checkout -b new_branch > #make a change > git add -A > git commit #with gerrit's commit hook in .git/hooks > git push origin <sha1>:refs/for/master 

Esto funciona, pero gerrit aún informa una dependencia del elemento previamente comprometido.

Esto es lo que Gerrit entiende por dependencies: una confirmación que se encuentra en la parte superior de otra confirmación. Si ambos están en revisión, el más nuevo depende del anterior.

Si no quieres que dependan el uno del otro, no crees las confirmaciones una encima de la otra. Crea un commit, luego crea una nueva twig basada en master para tu próximo commit

(git checkout origin/master -b NEW_BRANCH_NAME) .

Cuando presione el segundo compromiso para su revisión, su padre ya estará publicado y no dependerá de nada.

Me han enseñado a git reset --hard HEAD~1 esto haciendo un git reset --hard HEAD~1 después de cada git push .

Como una variante de git reset --hard HEAD~1 Yo uso esto en su lugar:

 git reset --hard origin/master 

Asumiendo, estoy trabajando en master para un cambio rápido.

De lo contrario, es preferible trabajar en una twig temática.

Hay muchos scripts de Git para ayudar a administrar las twigs temáticas:

  • git-flow
  • git extras
  • git create-branch

Estoy seguro de que hay otros.