Digamos que sua example.css
aparência seja assim:
.classname {
width: 440px;
}
/*#field_teacher_id {
display: block;
} */
form.table-form #field_teacher + label,
form.table-form #field_producer_distributor + label {
width: 300px;
}
.another {
width: 420px;
}
Agora vamos mudar os seletores de estilo no bloco do meio e, enquanto estamos nisso, exclua um estilo antigo comentado que não precisamos mais.
.classname {
width: 440px;
}
#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
.another {
width: 420px;
}
Isso foi fácil, agora vamos cometer. Mas espere, eu quero manter a separação lógica das alterações no controle de versão para uma simples revisão passo a passo do código e para que minha equipe e eu possamos pesquisar facilmente o histórico de confirmação para obter detalhes específicos.
A exclusão do código antigo é logicamente separada da outra alteração do seletor de estilo. Vamos precisar de dois commits distintos, então vamos adicionar pedaços para um patch.
git add --patch
diff --git a/example.css b/example.css
index 426449d..50ecff9 100644
--- a/example.css
+++ b/example.css
@@ -2,12 +2,7 @@
width: 440px;
}
-/*#field_teacher_id {
- display: block;
-} */
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
+#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
Stage this hunk [y,n,q,a,d,/,e,?]?
Opa, parece que as mudanças estão muito próximas, então o git as juntou.
Mesmo tentando dividi- lo pressionando stem o mesmo resultado, porque a divisão não é granular o suficiente para nossas alterações de precisão. Linhas inalteradas são necessárias entre as linhas alteradas para que o git possa dividir automaticamente o patch.
Então, vamos editá- lo manualmente pressionandoe
Stage this hunk [y,n,q,a,d,/,e,?]? e
O git abrirá o patch em nosso editor de escolha.
# Manual hunk edit mode -- see bottom for a quick guide
@@ -2,12 +2,7 @@
width: 440px;
}
-/*#field_teacher_id {
- display: block;
-} */
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
+#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
# ---
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.
#
# If the patch applies cleanly, the edited hunk will immediately be
# marked for staging. If it does not apply cleanly, you will be given
# an opportunity to edit again. If all lines of the hunk are removed,
# then the edit is aborted and the hunk is left unchanged.
Vamos revisar o objetivo:
Como posso adicionar a remoção de comentários CSS apenas para a próxima confirmação?
Queremos dividir isso em dois commits:
A primeira confirmação envolve a exclusão de algumas linhas (remoção de comentários).
Para remover as linhas comentadas, deixe-as em paz, elas já estão marcadas para rastrear as exclusões no controle de versão como queremos.
-/*#field_teacher_id {
- display: block;
-} */
O segundo commit é uma alteração, que é rastreada pelo registro de exclusões e adições:
Exclusões (linhas de seleção antigas removidas)
Para manter as linhas antigas do seletor (não as exclua durante este commit), queremos ...
Para remover as linhas '-', faça-as ''
... o que significa literalmente substituir os -
sinais de menos por um
caractere de espaço .
Então, essas três linhas ...
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
... se tornará ( observe o espaço único na primeira de todas as 3 linhas):
form.table-form #field_teacher + label,
form.table-form #field_producer_distributor + label {
Adições (nova linha de seleção adicionada)
Para não prestar atenção à nova linha de seletor adicionada durante esse commit, queremos ...
Para remover as linhas '+', exclua-as.
... o que significa literalmente excluir toda a linha:
+#user-register form.table-form .field-type-checkbox label {
(Bônus: se você estiver usando o vim como seu editor, pressione ddpara excluir uma linha. Usuários do Nano pressione Ctrl+ K)
Seu editor deve ficar assim quando você salvar:
# Manual hunk edit mode -- see bottom for a quick guide
@@ -2,12 +2,7 @@
width: 440px;
}
-/*#field_teacher_id {
- display: block;
-} */
form.table-form #field_teacher + label,
form.table-form #field_producer_distributor + label {
width: 300px;
}
# ---
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.
#
# If the patch applies cleanly, the edited hunk will immediately be
# marked for staging. If it does not apply cleanly, you will be given
# an opportunity to edit again. If all lines of the hunk are removed,
# then the edit is aborted and the hunk is left unchanged.
Agora vamos cometer.
git commit -m "remove old code"
E só para ter certeza, vamos ver as alterações desde o último commit.
git show
commit 572ecbc7beecca495c8965ce54fbccabdd085112
Author: Jeff Puckett <jeff@jeffpuckett.com>
Date: Sat Jun 11 17:06:48 2016 -0500
remove old code
diff --git a/example.css b/example.css
index 426449d..d04c832 100644
--- a/example.css
+++ b/example.css
@@ -2,9 +2,6 @@
width: 440px;
}
-/*#field_teacher_id {
- display: block;
-} */
form.table-form #field_teacher + label,
form.table-form #field_producer_distributor + label {
Perfeito - você pode ver que apenas as exclusões foram incluídas nesse commit atômico. Agora vamos terminar o trabalho e comprometer o resto.
git add .
git commit -m "change selectors"
git show
commit 83ec3c16b73bca799e4ed525148cf303e0bd39f9
Author: Jeff Puckett <jeff@jeffpuckett.com>
Date: Sat Jun 11 17:09:12 2016 -0500
change selectors
diff --git a/example.css b/example.css
index d04c832..50ecff9 100644
--- a/example.css
+++ b/example.css
@@ -2,9 +2,7 @@
width: 440px;
}
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
+#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
Finalmente, você pode ver que o último commit inclui apenas as alterações do seletor.