簡體   English   中英

如果僅更改了空格和換行符,如何忽略'git status'中的文件

[英]How to ignore files from 'git status' if only white spaces and line breaks changed

我經常使用一些選項卡而不是空格來推送代碼,反之亦然,或插入換行符以提高代碼可讀性。 我如何告訴git不要尋找這些變化?

我找不到一個原生的git解決方案來識別使用git status 真正改變了什么,但是下面的單行程在linux下運行良好:

for m in $(git status | grep modified| awk '{print $2}');do test -z "$(git diff -w $m)" || echo $m;done

結果將是一個修改文件列表,不包括只有空格更改的文件。

當您只想查看具有實際編輯的文件時,這在編寫提交消息之前特別有用,這在Windows和Linux系統之間來回移動時通常是個問題。 如果您可以控制兩個系統,那么在git中配置空白設置可能是一個更清潔的解決方案。

這應該做的伎倆:

git diff -w | git apply --cached --ignore-whitespace

修補程序將在不添加空格的情況下應用添加。

當你在工作區找到非白色的變化時, git diff真的是你的朋友(就像“git status”一樣)。 git diff有兩個選項來定制它,其中一些是

--ignore-space-at-eol
--ignore-space-change / -b
--ignore-all-space / -w

如果您對類似git狀態的已更改文件列表感興趣,可以發出

git diff --name-only

不幸的是,將其與例如-w結合使用以僅查看包含非白色更改的文件不起作用(至少不在我當前版本的git中,2.15)

所以我想出來實現后者,就是使用普通的git diff -w命令,然后提取文件名:

git diff -w |grep "^--- a"

這是利用git diff引入特定文件差異輸出的方式,並且比人們在此頁面上建議的其他單行腳本更簡單。

需要注意的是:AFAIK 在文本中間插入換行符(例如,為了提高代碼的可讀性,正如OP所描述的)將永遠不會被忽略,因為它實際上用兩行新行替換了一行文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM