¿Es posible hacer que git svn dcommit resulte en un solo svn commit?
Pregunta
Según el el manual , git dcommit
& # 8220; creará una revisión en SVN para cada commit en git. & # 8221; Pero, ¿hay alguna manera de evitar múltiples revisiones de Subversion? Es decir, para que git combine todos los cambios antes de realizar la svn commit
?
Solución
Si trabaja en una rama en git, puede git-merge --squash
, que hace eso dentro de git. A continuación, puede presionar esa confirmación aplastada a SVN.
Por supuesto, muchos pequeños commits son buenos, entonces ¿por qué querrías aplastarlos?
Otros consejos
El comando git rebase -i
puede hacer esto y más. Este comando es extremadamente poderoso, por lo que es bueno hacer amigos con él.
La sintaxis es: git rebase -i <commit ID>
. Esto abre su editor de texto, con opciones (e instrucciones) para modificar todas las confirmaciones hasta (sin incluir) la ID dada.
Por ejemplo, para modificar las 5 confirmaciones anteriores, puede hacer esto:
git rebase -i HEAD~5
O si su rama SVN se llama " svn / trunk " ;, entonces esta sintaxis también es buena:
git rebase -i svn/trunk
Entonces aparecerá una ventana del editor de texto. Para aplastar todo, cambie la primera palabra de cada línea después de la primera de & Quot; seleccione & Quot; a " aplastar " (Si esto suena confuso, tendrá más sentido cuando lo vea). Luego guarde y cierre el editor. Luego tendrá la oportunidad de editar el mensaje de confirmación para la confirmación aplastada.
Entre las otras cosas que puede hacer con <=>, están reordenar las confirmaciones, aplastar las confirmaciones de diferentes maneras y eliminar las confirmaciones.
Uso este comando constantemente; es una característica asesina de Git.
Ryan Tomayko escribió un poco sobre git rebase -i
, y dijo:
& # 8230; [es] un poco como git commit --amend saltó sobre el ácido y sosteniendo una motosierra & # 8211; completamente loco y bastante peligroso, pero capaz de exponer estados mentales completamente nuevos. Aquí puede editar, aplastar, reordenar, separar y anotar confirmaciones existentes de una manera que & # 8217; es más fácil e intuitivo de lo que debería ser.
Tengo una tendencia a comprometerme a menudo en git, pero no necesariamente quiero comprometer cada confirmación a svn, y aplastar todo mi trabajo tiene el mismo sentido. Ahora estoy intentando reordenar y agrupar algunos en unidades de confirmación más lógicas ahora.