En Subversion, es fácil fusionar un rango de conjuntos de cambios/diffs de una rama usando "svn merge -r a: b mybranch". Pero en git, encontré que solo es posible seleccionar una confirmación de una sucursal para aplicar ese parche a mi rama de trabajo actual. Entonces, me pregunto si existe una manera rápida de aplicar todas las confirmaciones de una sola vez entre dos etiquetas en una rama de corrección de errores a mi rama maestra actual.¿Cuál es la mejor manera de poner parche en un subrango de una sucursal?
Respuesta
La manera más fácil de realizar la acción que está buscando es con git rebase
. Aquí hay una receta. Supongamos que la etiqueta A es la confirmación, sobre la cual se basa la serie de parches que desea seleccionar y esa etiqueta B es la confirmación del parche final de la serie. Además, supongamos que br es el nombre de la rama actual y la rama donde se aplicará la nueva serie de parches.
# Checkout a new temporary branch at the current location
git checkout -b tmp
# Move the br branch to the head of the new patchset
git branch -f br B
# Rebase the patchset onto tmp, the old location of br
git rebase --onto tmp A br
Por lo que sé, no se puede git merge de esta manera. Merge está destinado a unir dos ramas que tienen un historial en común, no para recoger varias confirmaciones o series de parches. Siento que elegir es lo que estás pidiendo.
Usted puede utilizar cereza Git (no cereza recoger!) Para saber qué se compromete debe ser insertado en su rama, a continuación, git cherry-pick ellos. También puede pedir explícitamente git cherry-pick para registrar el origen de esos commits en caso de que esté eligiendo cuidadosamente de una sucursal pública. Esta es probablemente la mejor manera de lidiar con este problema. (Otro podría haber sido exportarlos a través de git format-patch y luego importarlos con git-am/git-apply, pero eso probablemente sería más lento, además no registrará el origen de los commits.)
EDITAR: "Público" (rama) se debe entender como algo no sujeto a la edición de historial. Por supuesto, puede hacerlo al desarrollar software de código cerrado sin que el código sea público.
La manera más fácil que he encontrado para hacer esto es:
git cherry-pick starthash..endhash
nota que los dos puntos no tienen espacios separándolas de las etiquetas de hash.
Tenga en cuenta que esto no funcionará correctamente, sino más bien todo después de starthash e incluyendo endhash. Para incluir starthash haz "git cherry-pick starthash^.. endhash" – Priyank
- 1. ¿Cuál es la mejor manera de poner un sistema de traducción en el sitio web php?
- 2. ¿Cuál es la mejor manera de poner en práctica este GetHashCode compuesta()
- 3. ¿Cuál es la mejor manera de declarar una variable global?
- 4. Cuál es la mejor manera de autorizar una llave USB
- 5. ¿Cuál es la mejor manera de analizar una gramática simple?
- 6. ¿Cuál es la mejor manera de deducir una mesa?
- 7. ¿Cuál es la mejor manera de construir una NSCompoundPredicate compleja?
- 8. ¿Cuál es la mejor manera de incrementar una enumeración?
- 9. ¿Cuál es la mejor manera de perfilar una aplicación Sinatra?
- 10. ¿Cuál es la mejor manera de barajar un NSMutableArray?
- 11. ¿Cuál es la mejor manera de implementar un "temporizador"?
- 12. ¿Cuál es la mejor manera de atrapar una excepción IllegalArgumentException
- 13. ¿cuál es la mejor manera de verificar una matriz vacía?
- 14. ¿Cuál es la mejor manera de probar un procedimiento almacenado?
- 15. ¿Cuál es la mejor manera de probar un RedirectToAction?
- 16. ¿Cuál es la mejor manera de implementar una aplicación Pylons?
- 17. ¿Cuál es la mejor manera de copiar una lista?
- 18. ¿Cuál es la mejor manera de inicializar un frijol?
- 19. ¿Cuál es la mejor manera de dibujar en la consola?
- 20. ¿Cuál es la mejor manera de determinar un bucle invariante?
- 21. ¿Cuál es la mejor manera de vaciar un directorio?
- 22. ¿Cuál es la mejor manera de dividir una cadena por un delimitador de manera funcional?
- 23. ¿Cuál es la mejor manera de hacer bucles en JavaScript
- 24. ¿Cuál es la mejor manera de crear consultas complejas RESTful?
- 25. La mejor manera de poner nombre a las tablas
- 26. ¿Cuál es la mejor manera de migrar datos en django
- 27. ¿Cuál es la mejor manera de recortar() en javascript
- 28. models.py hacerse grande, ¿cuál es la mejor manera de romperlo?
- 29. ¿Cuál es la mejor manera de manejar FBO en OpenGL?
- 30. Cuál es la mejor manera de actualizar entidades en nhibernate
@Charles Bailey: awesome! – jscoot
Debe tenerse en cuenta que no puede retener información sobre el origen de esas confirmaciones de esta manera. –
Necesité esta funcionalidad exacta unas cinco veces en los últimos tres días. Mucho mejor que cherry picking cada commit. –