¿Combinando y mezclando cambios en el control de versiones?

Como los sistemas de control de versiones almacenan confirmaciones como lists de cambios o al less son capaces de descifrar los cambios entre diferentes versiones de un file, es posible elegir cualquier cambio (no necesariamente secuencial) de cualquier twig, siempre que afecten a todos el mismo file, y aplicarlos a cualquier versión de un file en cualquier order, dejando de lado los conflictos?

Por ejemplo, digamos que tengo un file A con algún contenido inicial (versión 0), luego hago una twig y hago algunos cambios en ambas twigs (versiones 1, 2 y 1 ', 2'). Ahora me gustaría hacer una combinación de los cambios para get una versión "personalizada" del file A.

File A, version 0: ------------------ sample text 

 File A, version 1 (main branch): ------------------ sample text new text 1 <-- added line 

 File A, version 2 (main branch): ------------------ sample text new text 1 new text 2 <-- added line 

 File A, version 1' (new branch): ------------------ sample text new text A <-- added line 

 File A, version 2' (new branch): ------------------ sample text new text A new text B <-- added line 

Digamos que empiezo con la versión 2 de la twig principal y aplico los cambios (en order): 2 ', 1. En este ejemplo, debería get:

 File A, "custom" version: ------------------ sample text new text 1 new text 2 new text B new text 1 

¿Es posible algo así en este momento con SVN o git (u otros), al less hasta cierto punto? ¿Algo así es posible (es posible crear un sistema de control de versiones de este tipo)?

Las diferencias en los sistemas de control de versiones casi siempre incluyen algún context. El diff no dice "agregue una línea al final del file", sino que "agrega una línea después de las líneas que contienen este text, y antes de las líneas que contienen este otro text". Por esta razón, su ejemplo específico daría lugar a conflictos, y los diffs no se aplicarían limpiamente.

Si sus diferencias reales se aplicarían limpiamente, puede hacerlo en la mayoría de los sistemas de control de versiones. Se llama "cherry picking" y no está limitado a un único file. También puede aplicar manualmente un diff, pidiéndole a VCS una diferencia unificada entre las revisiones que le interesan y luego use la herramienta de línea de command patch para aplicar esa diferencia al estado base que desee.