假设您的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,?]?
糟糕,看起来变化太近了,所以git将它们紧紧绑在一起了。
甚至尝试通过按键进行拆分也s具有相同的结果,因为拆分的粒度不足以实现我们的精度更改。git 之间必须保持不变的行,以便git能够自动拆分补丁。
因此,让我们通过按手动对其进行编辑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;
}
最后,您可以看到最后一次提交仅包括选择器更改。