สมมติว่าexample.css
หน้าตาของคุณเป็นแบบนี้:
.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;
}
ทีนี้มาเปลี่ยนตัวเลือกสไตล์ในบล็อกตรงกลางและในขณะที่เราอยู่ที่นั่นลบสไตล์เก่า ๆ ที่เราไม่ต้องการอีกต่อไป
.classname {
width: 440px;
}
#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
.another {
width: 420px;
}
นั่นเป็นเรื่องง่ายตอนนี้เรามากระทำกัน แต่เดี๋ยวก่อนฉันต้องการรักษาการแยกลอจิคัลของการเปลี่ยนแปลงในการควบคุมเวอร์ชันสำหรับการตรวจสอบโค้ดขั้นตอนง่าย ๆ และเพื่อให้ทีมของฉันและฉันสามารถค้นหาคอมมิชชันประวัติสำหรับข้อมูลเฉพาะได้อย่างง่ายดาย
การลบรหัสเก่าจะแยกเชิงตรรกะออกจากการเปลี่ยนแปลงตัวเลือกลักษณะอื่น เราจะต้องใช้ความมุ่งมั่นที่แตกต่างกันสองอย่างดังนั้นเรามาเพิ่มนักล่าเพื่อหาปะ
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,?]?
อ๊ะดูเหมือนว่าการเปลี่ยนแปลงจะอยู่ใกล้เกินไปดังนั้นคอมไพล์ก็รวมมันเข้าด้วยกัน
แม้แต่การพยายามแยกมันด้วยการกดsก็ให้ผลเหมือนกันเพราะการแบ่งไม่ละเอียดพอสำหรับการเปลี่ยนแปลงที่แม่นยำของเรา บรรทัดที่ไม่เปลี่ยนแปลงจำเป็นต้องใช้ระหว่างบรรทัดที่มีการเปลี่ยนแปลงเพื่อให้คอมไพล์สามารถแบ่งแพทช์ได้โดยอัตโนมัติ
ดังนั้นเรามาแก้ไขด้วยตนเองโดยกดe
Stage this hunk [y,n,q,a,d,/,e,?]? e
git จะเปิดโปรแกรมปะแก้ในตัวเลือกที่เราเลือก
# 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.
ลองทบทวนเป้าหมาย:
ฉันจะเพิ่มการลบความคิดเห็น CSS ไปยังการส่งครั้งต่อไปได้อย่างไร
เราต้องการแบ่งออกเป็นสองคอมมิชชัน:
การคอมมิชชันแรกเกี่ยวข้องกับการลบบางบรรทัด (การลบความคิดเห็น)
ในการลบบรรทัดที่ใส่เครื่องหมายคอมเม้นท์เพียงปล่อยไว้ตามลำพังพวกเขาจะถูกทำเครื่องหมายเพื่อติดตามการลบในการควบคุมเวอร์ชันเช่นเดียวกับที่เราต้องการ
-/*#field_teacher_id {
- display: block;
-} */
การกระทำที่สองคือการเปลี่ยนแปลงซึ่งถูกติดตามโดยการบันทึกทั้งการลบและการเพิ่มเติม:
การลบ (ลบบรรทัดตัวเลือกเดิม)
ในการคงบรรทัดตัวเลือกเดิมไว้ (อย่าลบในระหว่างการคอมมิทนี้) เราต้องการ ...
หากต้องการลบบรรทัด '-' ให้ตั้งบรรทัด ''
... ซึ่งมีความหมายเปลี่ยนลบ-
สัญญาณด้วยช่องว่าง
ของตัวละคร
ดังนั้นสามบรรทัดนี้ ...
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
... จะกลายเป็น ( สังเกตเห็นช่องว่างเดียวในช่วงแรกของ 3 บรรทัด):
form.table-form #field_teacher + label,
form.table-form #field_producer_distributor + label {
การเพิ่มเติม (เพิ่มตัวเลือกบรรทัดใหม่)
หากไม่สนใจบรรทัดตัวเลือกใหม่ที่เพิ่มระหว่างการคอมมิชชันนี้เราต้องการ ...
หากต้องการลบบรรทัด '+' ให้ลบออก
... ซึ่งหมายถึงการลบทั้งบรรทัด:
+#user-register form.table-form .field-type-checkbox label {
(โบนัส: หากคุณใช้vimเป็นตัวแก้ไขกดddเพื่อลบบรรทัดผู้ใช้NanoกดCtrl+ K)
เครื่องมือแก้ไขของคุณควรมีลักษณะเช่นนี้เมื่อคุณบันทึก:
# 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.
ตอนนี้มากระทำกัน
git commit -m "remove old code"
และเพื่อให้แน่ใจว่าเรามาดูการเปลี่ยนแปลงจากการกระทำครั้งล่าสุด
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 {
สมบูรณ์แบบ - คุณจะเห็นได้ว่ามีเพียงการลบเท่านั้นที่รวมอยู่ในการกระทำปรมาณู ตอนนี้เรามาทำงานให้เสร็จ
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;
}
ในที่สุดคุณสามารถเห็นการกระทำล่าสุดรวมเฉพาะการเปลี่ยนแปลงตัวเลือก