我们使用的库中有一个更新,其中包括在文件末尾清理/标准化换行符。由于我认为这个更改是一个完全安全的更改,我希望能够自动说出任何具有diff 的文件,如,
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会内置一些内容,但如果是,我就无法在文档中找到它的详细信息。
答案 0 :(得分:1)
man 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
答案 1 :(得分:1)
使用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)