as maravilhas do `git add --patch`
o que é?
fazer muitas mudanças significativas em um único arquivo e querer separar tudo depois pra manter um ~commit limpo e com um único objetivo~ pode ser uma tortura dependendo da sua escolha de comandos.
pra não interromper o seu fluxo de pensamento e ainda permitir que você separe
mudanças relevantes em commits separados, existe o git add --patch
1. o
--patch
é uma flag permite que você olhe trechos de código
pra decidir o que entra ou não em um dado commit.
como funciona?
sem muito mistério, em vez de só adicionar o arquivo com git add
, você
adiciona com git add --patch
.
$ git status
Arquivos não monitorados:
(utilize "git add <arquivo>..." para incluir o que será submetido)
2022-04-06-git-add-patch.md
nenhuma modificação adicionada à submissão (utilize "git add" e/ou "git commit -a")
$ git add 2022-04-06-git-add-patch.md --patch
diff --git a/_posts/2022-04-06-git-add-patch.md b/_posts/2022-04-06-git-add-patch.md
index f6f9744..c7cdae4 100644
--- a/_posts/2022-04-06-git-add-patch.md
+++ b/_posts/2022-04-06-git-add-patch.md
@@ -5,3 +5,33 @@ date: 2022-04-06
+
+fazer muitas mudanças significativas em um único arquivo e quer separar
+elas pra manter um *~commit limpo e com um único objetivo~* pode ser uma
+tortura dependendo da sua escolha de comandos.
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
a partir da pergunta Stage this hunk [y,n,q,a,d,e,?]? temos algumas opções:
- y[es]: você adiciona o trecho de código ao commit
- n[o]: você não adiciona o trecho
- q[uit]: você sai da tela e não adiciona nenhum dos trechos remanescentes
- a[ll]: adiciona esse e todos os próximos que tiverem
- d: não adicione esse trecho e nenhum dos próximos
- e[dit]: edita manualmente o trecho
- ? - imprime a ajuda na tela
ao você adicionar ou pular um trecho, o terminal vai te mostrar o próximo trecho de código e assim até você passar por todos os arquivos que têm mudanças ou chegar ao fim das alterações do seu arquivo.
além dessas opções, você pode editar2 exatamente o que você quer ou não
adicionar, caso o trecho selecionado tenha informação a mais. para isso, você
tem que intercalar entre -
e +
, onde -
significa as linhas que você quer
remover e +
as linhas que você quer adicionar. se você desistir das edições,
pode só sair do seu editor sem salvar o arquivo e o git vai entender sua
desistência e abortar a operação. no geral, a opção de editar é um pouco
mais complicada, mas vale a pena se você quer fazer uma
edição mais complexa do seu código.
eu particularmente estou viciada nessa opção porque sempre esqueço de parar de
fazer o que que quer que eu esteja fazendo pra adicionar e commitar mudanças
relevantes. pra além do git add --patch
também tem o git add
--interactive
3
ou git add -i
, que permite que você adicione e interaja com seus arquivos de forma
interativa. vale a pena olhar.