Como desfazer / refazer partes seletivas do código?

Estou usando o Eclipse.

Isso acontece muito quando desenvolvemos um código como este (suponha que ele seja desenvolvido sequencialmente, de cima para baixo):

Part 1 (*)
Part 2
Part 3
Part 4 (*)
Part 5

Mas acabamos de descobrir que as partes 1 e 4 (marcadas com (*)) estão erradas e as outras estão bem. A questão é: como podemos desfazer apenas essas duas partes (1 e 4) sem desfazer o resto?

Se pudéssemos desfazer seletivamente, foi ótimo. Observe que simplesmente reverter o código para a versão 1 perde as partes 2, 3 e 5, que são as partes corretas e devem permanecer no código. Observe também que geralmente essas partes são misturadas em um ou dois blocos de código (não em blocos separados).

Exemplo:

Part 1: Add method f1(x, y) and move some code from main() to f1() --> incorrect (should be reverted)    
Part 2: Add method f2(a, b, c, d) --> correct (should remain)    
Part 3: Change another part of main() implementation --> correct (should remain)       
Part 4: Change f2 signature to f2(s, n) --> incorrect (should be reverted)       
Part 5: Change body of f2 --> correct (should remain)

A abordagem atual que eu uso é:

Mantendo uma cópia da versão mais recente em algum lugar (por exemplo, em um arquivo de texto temporário), desfaça antes da parte 1 e adicione as partes corretas do arquivo de texto temporário ao código-fonte.Comparação manual de diferentes versões e resolução de conflitos.

Alguém pensa em uma maneira mais fácil, ainda mais automática, de selecionar qual alteração desfazer e qual manter?

questionAnswers(2)

yourAnswerToTheQuestion