Disons que votre example.css
apparence ressemble à ceci:
.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;
}
Maintenant, changeons les sélecteurs de style dans le bloc du milieu, et pendant que nous y sommes, supprimons un ancien style commenté dont nous n'avons plus besoin.
.classname {
width: 440px;
}
#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
.another {
width: 420px;
}
C'était facile, maintenant engageons-nous. Mais attendez, je veux maintenir une séparation logique des changements dans le contrôle de version pour une révision simple du code par étapes, et pour que mon équipe et moi puissions facilement rechercher dans l'historique des validations des détails.
La suppression de l'ancien code est logiquement distincte de l'autre changement de sélecteur de style. Nous allons avoir besoin de deux validations distinctes, alors ajoutons des morceaux pour un 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,?]?
Oups, on dirait que les changements sont trop proches, donc git les a regroupés.
Même essayer de le diviser en appuyant sur sa le même résultat car le fractionnement n'est pas assez granulaire pour nos changements de précision. Des lignes inchangées sont requises entre les lignes modifiées pour que git puisse diviser automatiquement le patch.
Donc, nous allons manuellement modifier en appuyant sure
Stage this hunk [y,n,q,a,d,/,e,?]? e
git ouvrira le patch dans notre éditeur de choix.
# 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.
Passons en revue l'objectif:
Comment puis-je ajouter la suppression des commentaires CSS uniquement au prochain commit?
Nous voulons diviser cela en deux commits:
Le premier commit implique la suppression de certaines lignes (suppression des commentaires).
Pour supprimer les lignes commentées, laissez-les simplement, elles sont déjà marquées pour suivre les suppressions dans le contrôle de version comme nous le voulons.
-/*#field_teacher_id {
- display: block;
-} */
Le deuxième commit est un changement, qui est suivi en enregistrant à la fois les suppressions et les ajouts:
Suppressions (anciennes lignes de sélection supprimées)
Pour conserver les anciennes lignes de sélection (ne les supprimez pas lors de cette validation), nous voulons ...
Pour supprimer les lignes '-', faites-les ''
... ce qui signifie littéralement remplacer les -
signes moins par un
caractère espace .
Donc, ces trois lignes ...
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
... deviendra ( remarquez l'espace unique à la première des 3 lignes):
form.table-form #field_teacher + label,
form.table-form #field_producer_distributor + label {
Ajouts (nouvelle ligne de sélection ajoutée)
Pour ne pas faire attention à la nouvelle ligne de sélecteur ajoutée lors de ce commit, nous voulons ...
Pour supprimer les lignes «+», supprimez-les.
... ce qui signifie littéralement supprimer toute la ligne:
+#user-register form.table-form .field-type-checkbox label {
(Bonus: si vous utilisez vim comme éditeur, appuyez sur ddpour supprimer une ligne. Les utilisateurs de Nano appuyez sur Ctrl+ K)
Votre éditeur devrait ressembler à ceci lorsque vous enregistrez:
# 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.
Maintenant, engageons-nous.
git commit -m "remove old code"
Et juste pour être sûr, voyons les changements du dernier 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 {
Parfait - vous pouvez voir que seules les suppressions ont été incluses dans ce commit atomique. Maintenant, terminons le travail et engageons le reste.
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;
}
Enfin, vous pouvez voir que le dernier commit inclut uniquement les modifications du sélecteur.