Допустим, ваша 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 мог автоматически разбивать патч.
Итак, давайте вручную отредактируем его, нажав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 {
... станет ( обратите внимание на один пробел в первой из всех трех строк):
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;
}
Наконец, вы можете видеть, что последний коммит включает только изменения селектора.