Git branch diff en un nuevo compromiso

Entonces digamos que tengo una twig principal, la llamaremos 'maestra'. Hice una twig, llamada 'nueva function'. He hecho un montón de commits en esta twig, así que puedo retroceder en el time, pero he hecho muchos avances mientras desarrollaba la function, por lo que el logging de commit es bastante desorderado.

Si tuviera que ver git diff master … new-feature por ejemplo.

Si quisiera crear una nueva confirmación nueva en 'master' que incluya todos los cambios entre las dos twigs, ¿cuál es la forma más eficiente de hacerlo?

git checkout master git merge --squash new-feature git commit 

El post de confirmación comenzará mostrando la list completa de confirmaciones fusionadas / aplastadas, pero puedes editar eso para que sea lo que quieras.

Puedes usar rebase interactivo para esto: git rebase --interactive . Entonces solo usa la opción squash. Solo utiliza las actualizaciones de la confirmación, pero no crea la confirmación.

Use git rebase – HEAD ~interactive (sin importar cuántas cometas quiera aplastar). por ejemplo, git rebase –interactive HEAD ~ 5. Esto cargará sus últimas 5 confirmaciones y mostrará una window del editor con los posts. Cada post tendrá 'selección' al comienzo. Baje al último post, cambie 'pick' a 'squash' y salga. Se abrirá una nueva window solicitando un post de confirmación. Este será el nuevo post de compromiso de squash commits. Sal y aplastará todos los commits en uno nuevo.

Aquí hay un ejemplo: https://ariejan.net/2011/07/05/git-squash-y-la-latets-commits-into-one

Otra opción que podría funcionar mejor para usted, sería generar un file de parche con git diff --patch > "patch filename" y luego aplicarle un parche en su twig principal usando git apply "patch file name" .

Página de manual para git-diff (especialmente "Generación de parches con -p"): http://www.kernel.org/pub/software/scm/git/docs/git-diff.html

Página de manual para git-apply: http://www.kernel.org/pub/software/scm/git/docs/git-apply.html

Puede comprometer todo en su twig de características, luego fusionarse en maestro aceptando 'sus' para todos los cambios.

Aquí hay una pregunta sobre el desbordamiento de stack con una excelente respuesta sobre cómo hacerlo: ¿Existe una versión "suya" de "git merge -s ours"?