Digamos que se example.css
ve así:
.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;
}
Ahora cambiemos los selectores de estilo en el bloque del medio, y mientras lo hacemos, eliminemos un estilo antiguo comentado que ya no necesitamos.
.classname {
width: 440px;
}
#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
.another {
width: 420px;
}
Eso fue fácil, ahora comprometámonos. Pero espere, quiero mantener una separación lógica de los cambios en el control de versiones para una simple revisión de código paso a paso, y para que mi equipo y yo podamos buscar fácilmente en el historial de confirmaciones detalles.
Eliminar el código antiguo está lógicamente separado del otro cambio de selector de estilo. Vamos a necesitar dos confirmaciones distintas, así que agreguemos trozos para un parche.
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,?]?
Vaya, parece que los cambios están demasiado cerca, por lo que git los ha juntado.
Incluso tratar de dividirlo presionando stiene el mismo resultado porque la división no es lo suficientemente granular para nuestros cambios de precisión. Se requieren líneas sin cambios entre las líneas cambiadas para que git pueda dividir automáticamente el parche.
Por lo tanto, vamos a manualmente editar pulsandoe
Stage this hunk [y,n,q,a,d,/,e,?]? e
git abrirá el parche en nuestro editor de elección.
# 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.
Repasemos el objetivo:
¿Cómo puedo agregar la eliminación de comentarios CSS solo a la próxima confirmación?
Queremos dividir esto en dos commits:
La primera confirmación implica eliminar algunas líneas (eliminación de comentarios).
Para eliminar las líneas comentadas, solo déjelas en paz, ya están marcadas para rastrear las eliminaciones en el control de versiones tal como lo deseamos.
-/*#field_teacher_id {
- display: block;
-} */
La segunda confirmación es un cambio, que se rastrea registrando eliminaciones y adiciones:
Eliminaciones (se eliminaron las líneas de selección antiguas)
Para mantener las líneas de selección antiguas (no las elimine durante esta confirmación), queremos ...
Para eliminar las líneas '-', hágalas ''
... que literalmente significa reemplazar los -
signos menos con un
carácter de espacio .
Entonces estas tres líneas ...
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
... se convertirá ( observe el espacio único en la primera de las 3 líneas):
form.table-form #field_teacher + label,
form.table-form #field_producer_distributor + label {
Adiciones (nueva línea de selector agregada)
Para no prestar atención a la nueva línea de selector agregada durante esta confirmación, queremos ...
Para eliminar las líneas '+', elimínelas.
... que literalmente significa eliminar toda la línea:
+#user-register form.table-form .field-type-checkbox label {
(Bonificación: si está utilizando vim como su editor, presione ddpara eliminar una línea. Los usuarios de Nano presionan Ctrl+ K)
Su editor debería verse así cuando guarde:
# 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.
Ahora comprometámonos.
git commit -m "remove old code"
Y solo para asegurarnos, veamos los cambios desde la última confirmación.
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 {
Perfecto: puede ver que solo las eliminaciones se incluyeron en esa confirmación atómica. Ahora terminemos el trabajo y comencemos el 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, puede ver que la última confirmación solo incluye los cambios del selector.