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;
}
それは簡単でした、今コミットしましょう。しかし、待ってください。単純な段階的なコードレビューのためにバージョン管理の変更の論理的な分離を維持し、チームと私がコミット履歴で簡単に詳細を検索できるようにしたいと考えています。
古いコードの削除は、他のスタイルセレクターの変更とは論理的に分離されています。2つの異なるコミットが必要になるので、パッチのハンクを追加しましょう。
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コメントの削除を次のコミットにのみ追加するにはどうすればよいですか?
これを2つのコミットに分割します。
最初のコミットには、いくつかの行の削除が含まれます(コメントの削除)。
コメント付きの行を削除するには、そのままにしておきます。必要に応じて、バージョン管理での削除を追跡するようにマークされています。
-/*#field_teacher_id {
- display: block;
-} */
2番目のコミットは変更であり、削除と追加の両方を記録することによって追跡されます。
削除(古いセレクタ行は削除されました)
古いセレクター行を保持するには(このコミット中にそれらを削除しないでください)、私たちは...
'-'行を削除するには、それらを ''にします
...これは、文字どおりマイナス-
記号をスペース文字に置き換えることを意味します。
したがって、これらの3行...
-
-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;
}
最後に、最後のコミットにはセレクターの変更のみが含まれていることがわかります。