2011-03-29 7 views

Respuesta

14

Encontrar todos los envíos por un autor y salvar su hash para un archivo:

git log --author=<author> --format=%H > /tmp/commit-by-x 

Crear una nueva rama que no contiene este particular, el autor cometió ya que no desea aplicar dos veces. Para ello, puede crear una nueva rama vacío:

git checkout --orphan commits-by-x 

cereza-recoger todos los envíos de ese autor (del más antiguo al más reciente):

tac /tmp/commit-by-x | while read sha; do git cherry-pick ${sha}; done 

Obviamente, si quieres que esto tenga éxito los cambios introducido por author-x tiene que ser muy localizado.

+0

¡Gran solución! En lugar de usar --orphan, tuve más éxito usando git checkout -b en ese paso, y modifiqué el archivo tmp para que solo contuviera la docena más reciente de confirmaciones del autor específico. Como se mencionó, esto no funcionará fácilmente si las confirmaciones del autor se extienden a través de múltiples ramas, por lo que es posible que tenga que seleccionar solo ciertos valores hash del archivo tmp después de que el primer comando lo genere. – emery

Cuestiones relacionadas