2011-02-08 24 views
39

Soy nuevo en git (¡y lo disfruto mucho!). Al desarrollarme en una nueva sucursal, seguí cometiendo los diversos "estados" de desarrollo de mi aplicación. Ahora tengo que verificarlo para su revisión, pero no quería que todo vaya en diferentes commits (diferentes comentarios e ids).Git merge commits

¿Cómo puedo hacer un push de todos los cambios como si fuera la primera vez?

+3

Es posible que desee preguntar esto en Stack Overflow, ya que es una pregunta técnica específica y obtendrá un público más amplio. –

+0

gracias @Alex Feinman :) – DiogoNeves

+0

posible duplicado de [¿Cómo puedo fusionar dos confirmaciones en una?] (Http://stackoverflow.com/questions/2563632/how-can-i-merge-two-commits-into-one) – givanse

Respuesta

49
git rebase -i HEAD~5 

le permite seleccionar de forma interactiva cuál de las 5 últimas confirmaciones se une en una; la parte superior de la cabeza se abre el editor con algo como esto

pick xxxx commit1 
pick xxxx commit2 
pick xxxx commit3 
pick xxxx commit4 
pick xxxx commit5 

que cambiar esto en

pick xxxx commit1 
squash xxxx commit2 
squash xxxx commit3 
squash xxxx commit4 
pick xxxx commit5 

que se traduce en dos confirmaciones quedando: primero que ha combinado compromete de 1 - 4, y commit 5 (el más nuevo) que se deja solo

+4

Tiene el pedido al revés - las confirmaciones se enumeran más antiguas - primero. –

+0

@jleedev +1 tienes razón, lo solucionó – stijn

+0

¡Gracias! :) De hecho, reinicé suavemente el compromiso justo antes del primer compromiso que hice y luego hice un nuevo compromiso de todos los cambios, pero no estaba contento con mi solución. Gracias por este :) – DiogoNeves

5

Creo que es una buena idea mantener sus "micro commits". Puede hacer una diferencia desde la última confirmación antes de su función hasta la CABEZA actual para ver la diferencia completa que puede enviar para su revisión.

+0

Es más una cosa específica de escenario; por lo general, querrás volver a establecer la base y hacer los commits más lógicos y deshacerte de "¡Uy!" se compromete antes de enviar parches. – alternative

+1

Eso es cierto, pero no me gusta aplastar toda la semana/mes de desarrollo en una sola confirmación solo con el fin de revisarla. Soy un gran usuario de '--amemend'. –

+0

Probablemente ambos tengan razón, como dijo Mathepic, debe ser específico de un escenario. En mi caso, lo estoy enviando para que otros lo revisen y las confirmaciones de 'copia de seguridad' no tienen mucho sentido allí :) Gracias – DiogoNeves