Nehmen wir an, Sie sehen so example.css
aus:
.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;
}
Lassen Sie uns nun die Stilauswahl im mittleren Block ändern und, während wir gerade dabei sind, einen alten auskommentierten Stil löschen, den wir nicht mehr benötigen.
.classname {
width: 440px;
}
#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
.another {
width: 420px;
}
Das war einfach, jetzt legen wir fest. Aber warten Sie, ich möchte die logische Trennung der Änderungen in der Versionskontrolle für eine einfache schrittweise Codeüberprüfung beibehalten, damit mein Team und ich den Commit-Verlauf problemlos nach Einzelheiten durchsuchen können.
Das Löschen von altem Code ist logisch von der anderen Änderung der Stilauswahl getrennt. Wir werden zwei unterschiedliche Commits benötigen, also fügen wir Hunks für einen Patch hinzu.
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,?]?
Hoppla, es sieht so aus, als wären die Änderungen zu eng, also hat git sie zusammengeschmissen.
Selbst der Versuch, es durch Drücken zu teilen , shat das gleiche Ergebnis, da die Teilung für unsere Präzisionsänderungen nicht detailliert genug ist. Unveränderte Zeilen sind zwischen geänderten Zeilen erforderlich, damit Git den Patch automatisch aufteilen kann.
Lassen Sie es uns also manuell bearbeiten , indem Sie auf drückene
Stage this hunk [y,n,q,a,d,/,e,?]? e
git öffnet den Patch in unserem Editor Ihrer Wahl.
# 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.
Lassen Sie uns das Ziel überprüfen:
Wie kann ich das Entfernen von CSS-Kommentaren nur zum nächsten Commit hinzufügen?
Wir wollen dies in zwei Commits aufteilen:
Beim ersten Festschreiben werden einige Zeilen gelöscht (Entfernen von Kommentaren).
Um die kommentierten Zeilen zu entfernen, lassen Sie sie einfach in Ruhe. Sie sind bereits markiert, um die Löschungen in der Versionskontrolle genau so zu verfolgen, wie wir es möchten.
-/*#field_teacher_id {
- display: block;
-} */
Das zweite Commit ist eine Änderung, die durch Aufzeichnen von Löschungen und Hinzufügungen verfolgt wird:
Löschungen (alte Auswahlzeilen entfernt)
Um die alten Auswahlzeilen beizubehalten (löschen Sie sie während dieses Commits nicht), möchten wir ...
Um '-' Linien zu entfernen, machen Sie sie ''
... das bedeutet wörtlich die minus ersetzen -
Zeichen mit einem Leerzeichen
Charakter.
Also diese drei Zeilen ...
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
... wird ( beachten Sie das einzelne Leerzeichen in der ersten von allen 3 Zeilen):
form.table-form #field_teacher + label,
form.table-form #field_producer_distributor + label {
Ergänzungen (neue Auswahlzeile hinzugefügt)
Um nicht auf die neue Auswahlzeile zu achten, die während dieses Commits hinzugefügt wurde, möchten wir ...
Um '+' Zeilen zu entfernen, löschen Sie sie.
... was wörtlich bedeutet, die ganze Zeile zu löschen:
+#user-register form.table-form .field-type-checkbox label {
(Bonus: Wenn Sie zufällig vim als Editor verwenden, drücken Sie dd, um eine Zeile zu löschen. Nano- Benutzer drücken Ctrl+ K)
Ihr Editor sollte beim Speichern folgendermaßen aussehen:
# 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.
Jetzt legen wir fest.
git commit -m "remove old code"
Und um sicherzugehen, sehen wir uns die Änderungen seit dem letzten Commit an.
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 {
Perfekt - Sie können sehen, dass nur die Löschungen in diesem atomaren Commit enthalten waren. Jetzt beenden wir den Job und legen den Rest fest.
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;
}
Schließlich können Sie sehen, dass das letzte Commit nur die Selektoränderungen enthält.