GIT: Quiero fusionar la twig B en la twig A, pero no quiero fusionar todos los cambios. Quiero que se copien algunas de las diferencias en A en B

Estoy fusionando la twig B con la twig A. Hay mucho cruft. Si hay algún código de debugging en B / file1, quiero "quitarle el escenario" a ese trozo, así que ahora ese trozo de código es igual en B y A. Sin embargo, no creo que se pueda deshacer con fusiones. Lo hago a mano, pero esto consume mucho time y es propenso a errores. Básicamente, quiero fusionar dos twigs y elegir qué cambios entrar en la fusión. No puedo usar cherry pick porque hay demasiados commits.

Si realmente te molesta contra cherry-pick (probablemente, me quedaría con él, usando su capacidad de secuenciador), podría ser de la siguiente manera:

git merge --log --no-commit BranchB git revert --no-commit BadCommit1 BadCommit2... git commit 

La idea es crear una fusión, y luego revertir 'malos cambios' en ella. Técnicamente hace exactamente lo que necesitas. Pero dependiendo de los detalles de su caso, esto podría ser bueno o no, ya que las expectativas de una fusión suelen suponer que todas las características de BranchB ya están en BranchA. Entonces, use con cuidado.

La order de oro para mí ha sido la Reasignación interactiva a través de git rebase -i HEAD~<number> . Me resulta muy fácil volver a escribir tu historial de git de esta manera. Así es como para su caso específico:

  1. Haga una sucursal temporal solo en caso de que cometa algún error:

     git checkout -b <temp-branch-name> 
  2. Elimina las confirmaciones que no deseas:

     git rebase -i HEAD~<number-of-commits-backwards-you-want-to-go> pick <commit-that-i-want> pick <another-commit-that-i-want> 
  3. Guarde, luego cambie a su sucursal de destino y fusione la bifurcación temporal en ella:

     git checkout <destination-branch> git merge <temp-branch-name>