Imagine que estou em uma filial feat
e tenho um test.txt
arquivo que contém esse conteúdo.
111
Então fiz um commit B
, adicionando essas duas linhas.
111
+ 222
+ 333
E o histórico do git se parece com isso
A
|
B(origin/feat) # adding 222, 333
Então percebi 333
que deveria estar em um commit diferente para que pudesse ser escolhido por outro branch. Então criei outro commit para remover 333
.
111
222
- 333
A
|
B(origin/feat) # adding 222, 333
|
C(feat) # removing 333
Existe uma maneira de reescrever o histórico para fazer com que o histórico de confirmações fique assim?
A
|
D # adding 222 (state of C)
|
E(origin/feat) # adding 333 (state of B)
Não me importo em reescrever o histórico e forçar o push, já que sou o único trabalhando neste branch.
A maneira com menos comandos desconhecidos:
o caminho com menos rotatividade de worktree:
Um exemplo prático:
Uma alternativa às soluções de @jthill com os comandos de encanamento
read-tree
ecommit-tree
, poderia ser por meio de uma redefinição mista para commitB
e, em seguida, adicionar um patch na linha com222
a opção de edição para fazer commit dessa única alteração (commitD
). Finalmente, você pode fazer commit da única alteração restante (linha333
) e obter commitE
.