我意識到這一點是因為預提交配置開始檢查尾隨空白條件(所生成的差異本身就是回購的一部分,因此git commit捕獲了空白條件)。
我基本上指的是默認git diff輸出中的所有空行,它們不是修補本身的一部分;例如,一行之前的所有空diff --git a ...行;它們總是在 2 個換行符之間包含 1 個空格。
我相信它們是在顯示不屬于修補程式的周圍相關代碼時產生的,以提高可讀性,但檔案中的那些行比較它們本身沒有空格!
例如,在更改包含內容的檔案后:
hello = "Hellow Stack Overflow"
print(hello)
quit()
git diff輸出:
diff --git a/1.py b/1.py
index da132e0..4fdf846 100644
--- a/1.py
b/1.py
@@ -1,4 1,4 @@
-hello = "Hellow Stack Overflow"
hello = "Hello Stack Overflow"
print(hello)
(補丁中的前行print(hello)和后行print(hello)各有一個空格(并洗掉空格:補丁仍然有效))
uj5u.com熱心網友回復:
這是一個很好的例子。這是原始差異,除了我添加\$到每行的末尾以提高可見性:1
diff --git a/1.py b/1.py\$
index da132e0..4fdf846 100644\$
--- a/1.py\$
b/1.py\$
@@ -1,4 1,4 @@\$
-hello = "Hellow Stack Overflow"\$
hello = "Hello Stack Overflow"\$
\$
print(hello)\$
\$
git diff使用帶有 context 的統一 diff形式,并且默認情況下已-U3設定:它應該在 diff hunk 的更改上方和下方使用“三行背景關系”。這里的改動是第 1 行,所以上面不是一開始就包括三行,而是下面有三行(實際上有四行,所以git diff可以用 截斷-U3)。
在 diff 輸出中,修改后的行以 or-表示添加或洗掉的行,未更改的背景關系行以單個空格作為前綴。如果缺少背景關系行之前的空白,一些統一差異的天真消費者可能會感到不安,因此 Git 會生成標準表單。
如果您愿意,您可以使用它-U0來選擇 no-lines-of-context。 正如您在評論中指出的那樣,git apply它本身(和其他 Git 套件程式)通常不介意背景關系行是否丟失其前導空格,因此您可以在需要背景關系時去掉這些空格,但不喜歡僵化的格式 - 但是知道背景關系何時結束有點棘手(您必須使用這些@@行來保持計數,所以不要將它們與 一起使用--recount)。
1 BSDvis程式通過-l選項執行此操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472756.html
上一篇:將句子拆分為串列時如何保留空格?
