Git Hunk Splitting

Isso mudou minha vida git : git add -p {files}

Você possivelmente já fez isso antes, percorreu os pedaços de código a serem corrigidos. Talvez até mesmo acerte (s) neste ponto e siga seu caminho feliz, mas uma opção é manualmente (e) ditar o pedaço.

Você verá o seguinte:

# ...
@@ -1,2 +1,4 @@
this is some existing content
+hello
+world
and a little more too
# ...

Digamos que você esteja adicionando um novo recurso que usa todos os “hello” s nos arquivos e chama a função “hello”, então não precisamos da linha “world” … Exclua-o.

Você não está excluindo o código para sempre, você apenas o está excluindo deste patch sendo aplicado ao código, compondo este próximo commit; MAS, a cópia de trabalho em seus arquivos ainda terá aquela linha, apenas não faz parte deste commit.

Porém, tenha cuidado, você ainda precisa manter a linha “e um pouco mais”, porque o patch está usando isso como uma âncora. Faça suas edições, salve o arquivo, feche o editor e execute os seguintes comandos para ver o que aconteceu:

git diff –cached – Compara o commit atualmente testado com o seu repositório local

--- a/example-file
+++ b/example-file
@@ -1,2 +1,3 @@
this is some existing content
+hello
and a little more too

git diff – Compara os arquivos de trabalho (arquivos em seu diretório) com o commit atualmente testado

--- a/example-file
+++ b/example-file
@@ -1,3 +1,4 @@
this is some existing content
hello

+world
and a little more too

A razão disso mostrar a linha “hello” é porque é isso que está sentado em seu commit encenado agora. Então, tudo é incrível.

E se você quiser desfazer o que acabou de fazer? Você pode sempre acessar o reset HEAD e voltar, iniciando o processo novamente.