De acuerdo con the manual, git dcommit
"creará una revisión en SVN para cada confirmación en git." ¿Pero hay una manera de evitar las revisiones múltiples de Subversion? Es decir, ¿Git fusionó todos los cambios antes de realizar el svn commit
?¿Es posible hacer que git svn dcommit resulte en una única confirmación svn?
Respuesta
Si trabaja en una sucursal en git, puede git-merge --squash
, que lo hace dentro de git. A continuación, puede presionar ese compromiso aplastado a SVN.
Por supuesto, muchos compromisos pequeños son buenos, entonces ¿por qué querría aplastarlos?
Gracias!(Normalmente me gustaría un montón de compromisos pequeños, pero esto se refiere a un proyecto de cliente en el que mi socio y yo necesitamos impulsar cambios entre sí con frecuencia, y con frecuencia incluso cambios que romperían el tronco). – plindberg
¿Por qué no trabajan ambos en la misma rama (svn), entonces? –
Uso muchos pequeños commits para facilitar el seguimiento de los cambios; Cuando me comprometo con el servidor svn, generamos un correo electrónico para cada confirmación de SVN. Prefiero hacer el trabajo extra de volver a combinar con squash para las confirmaciones de "unidades lógicas" y ahorrarles a todos unos pocos correos electrónicos. – cbowns
El comando git rebase -i
puede hacer esto, y más. Este comando es extremadamente poderoso, por lo que es bueno hacer amistad con él.
La sintaxis es: git rebase -i <commit ID>
. Esto muestra su editor de texto, con opciones (e instrucciones) para modificar todas las confirmaciones hasta (sin incluir) la identificación dada.
Por ejemplo, para modificar las 5 confirmaciones anteriores, usted puede hacer esto:
git rebase -i HEAD~5
O si su rama SVN se llama "svn/trunk", a continuación, esta sintaxis es bueno también:
git rebase -i svn/trunk
Aparecerá una ventana del editor de texto. Para aplastar todo, cambie la primera palabra de cada línea después de la primera, de "elegir" a "aplastar" (si esto suena confuso, tendrá más sentido cuando lo vea). Luego guarde y cierre el editor. A continuación, tendrá la oportunidad de editar el mensaje de confirmación para la confirmación aplastada.
Entre otras cosas que puede hacer con git rebase -i
, están reordenando las confirmaciones, aplastando las confirmaciones de diferentes maneras y eliminando las confirmaciones.
Utilizo este comando constantemente; es una característica clave de Git.
Ryan Tomayko escribió un poco sobre git rebase -i
, que dijo:
... [es] un poco como git commit --amend saltó sobre el ácido y la celebración de una motosierra - completamente loco y bastante peligroso, pero capaz de exponiendo estados de mente completamente nuevos. Aquí puede editar, aplastar, reordenar, separar y anotar las confirmaciones existentes de una forma más fácil e intuitiva de lo que debería ser.
que tienen una tendencia a cometer a menudo en git, pero no necesariamente quieren dcommit cada se comprometen a SVN, y aplastando todo mi trabajo hace tan poco sentido. Ahora estoy intentando reordenar y agrupar algunos en unidades de compromiso más lógicas.
- 1. ¿Es git svn dcommit atomic?
- 2. git svn dcommit sin rebasing
- 3. ¿Cómo puedo deshacer un git svn dcommit?
- 4. ¿Se requiere git svn rebase antes de git svn dcommit?
- 5. git svn dcommit con nombres de usuario svn
- 6. git-svn rebase y dcommit problema
- 7. Git-Svn dcommit provoca división de ramas
- 8. ¿Hay una manera de "git svn dcommit" de un git-svn repositorio clonado:
- 9. Cómo reparar "archivo no encontrado" en git svn dcommit?
- 10. git svn dcommit no encuentra cambios y restablecer la cabeza
- 11. ¿Puedo hacer que git-svn maneje svn: eol-style?
- 12. ¿Cómo determina git svn dcommit a dónde comprometerse?
- 13. git-svn no dcommit, incluso después de la salida limpia
- 14. ¿Por qué git-svn dcommit deja commits duplicados en mi git repo? ¿Puedo detenerlo haciendo eso?
- 15. Resolviendo conflictos Git Svn
- 16. Ganchos para git-svn
- 17. ¿Es posible mantener archivos .gitignore fuera de SVN?
- 18. ¿Es posible programar una actualización de svn?
- 19. svn: ¿Cómo deshacer una fusión (sin confirmación)?
- 20. SVN confirmación atómica cómo-a
- 21. git-svn fusionar 2 ramas svn
- 22. escogiendo cereza con git-svn
- 23. svn import retroactiva en git
- 24. svn "git add" alternative?
- 25. Git: advertencia: refname 'xxx' es ambiguo cuando uso git-svn
- 26. SVN Archivos específicos de confirmación
- 27. git-svn no es un comando git?
- 28. git-svn después de mover un repositorio SVN?
- 29. ¿Tiene Git-Svn Store Svn contraseñas?
- 30. git-svn cambio de contraseña
Tengo el mismo problema. Imagina que clonas un svn repo a git como tu maestro, haces 3 commits con diferentes mensajes y luego usas git svn dcommit. ¿Es posible "fusionar" estos 3 commits en uno solo? Cómo puedes hacerlo ? Puede darnos un ejemplo ? ¡Gracias! – sergiofbsilva
Posible duplicado de [Combine las confirmaciones locales de Git en una confirmación para git-svn] (http://stackoverflow.com/questions/1408381/combine-local-git-commits-into-one-commit-for-git-svn) – centic