[英]Git tool to remove lines from staging if they consist only of changes in whitespace
[英]Any way in git, to add all files with only whitespace changes to staging?
來自我們使用的庫的更新,其中包括在文件末尾清理/標准化換行。 正如我認為這種變化完全安全的變化,我想能夠自動說,有一個差異就像任何文件,
diff --git a/ExampleFile.cs b/ExampleFile.cs
index abcdef..abcd 100755
--- a/ExampleFile.cs
+++ b/ExampleFile.cs
@@ -88,4 +88,4 @@ namespace com.sixminute
}
}
-}
\ No newline at end of file
+}
直接進入暫存,所以我只需要處理/審查已更改的“真實”文件? 基本上,任何文件,如果我運行git diff -w ExampleFile.cs
並返回一個空字符串應該添加。
我已經找到了一種使用git自動執行此操作的方法,但我看不到任何直接的方法可以執行此操作。 我的解決方案是編寫一個python幫助器腳本(下面的git
只是我的shell中git二進制文件的sh.Command包裝器),
for fname in git.diff('--name-only', '--full-index', 'HEAD').splitlines():
if '' == git.diff('-w', fname):
print 'adding', fname
git.add(fname)
但對於這樣的事情,我有點自然地認為git會內置一些東西,但如果是,我在文檔中找不到它的細節。
男人git-diff說:
-忽略空白線
忽略其行全部為空的更改。
嘗試這樣的事情:
for fname in $(git diff --name-only --full-index HEAD)
do
diff=$(git diff -w --ignore-blank-lines)
[ -z "$diff" ] && git add $fname
done
使用Python和Python sh庫( https://github.com/amoffat/sh )提交我自己的答案,
import sh
git = sh.git.bake('--no-pager', _cwd='/Developer/repos/git/example')
for fname in git.diff('--name-only', '--full-index', 'HEAD').splitlines():
diff = git.diff('-w', fname)
print diff
if '' == diff:
print 'adding', fname
git.add(fname)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.